Kembali ke Daftar Catatan

Island Architecture

#astro#client-island#server-island

Island Architecture di Astro adalah pola di mana hanya bagian-bagian tertentu dari halaman web yang dibuat interaktif atau dinamis, sementara sisanya tetap HTML statis.

Contoh bagian yang termasuk "island":

Terdapat dua jenis island:

1. Client Island

import { useState } from 'react';

export default function Counter() {
  const [count, setCount] = useState(0);

  const increment = () => {
    setCount((prevCount) => prevCount + 1);
  };

  const decrement = () => {
    setCount((prevCount) => prevCount - 1);
  };
  return (
    <div>
      {count}
      <button onClick={increment}>tambah</button>
      <button onClick={decrement}>kurang</button>
    </div>
  );
}
---
import Layout from '../layouts/Layout.astro';
import Counter from '../components/Counter.tsx';
---

<Layout>
    <h1>hello wolrd</h1>
    <Counter client:load/>
</Layout>

2. Server Island

---
const response = await fetch('https://jsonplaceholder.typicode.com/posts?_limit=3');
const articles = await response.json();
---

<section>
  <h2>Artikel Terbaru</h2>
  <ul>
    {articles.map(article => (
      <li>
        <strong>{article.title}</strong>
        <p>{article.body}</p>
      </li>
    ))}
  </ul>
</section>

Catatan

Catatan Terkait