Mengenal Komponen Card Di Astro

Memahami komponen di Astro JS sebenarnya sangat mudah jika kita membayangkannya seperti mainan Lego. Komponen adalah potongan balok kecil yang bisa kita gunakan berulang kali untuk membangun sesuatu yang besar.

Mari kita bedah konsep komponen Card di Astro, cara menggunakannya, dan bagaimana memindahkan logika dari index.astro ke dalam Card tersebut.

1. Apa itu Komponen Card di Astro?

Komponen Card biasanya digunakan untuk menampilkan ringkasan informasi yang berulang, seperti daftar produk, portofolio, atau daftar postingan blog.

Alih-alih menulis struktur HTML yang sama berulang-ulang untuk setiap postingan di file utama (index.astro), kita membuat satu cetakan (template) bernama Card.astro, lalu mengirimkan data yang berbeda-beda ke dalamnya melalui Props (properti).

2. Cara Membuat dan Menggunakan Komponen Card

Mari kita praktikkan alur pembuatannya. Biasanya, komponen diletakkan di dalam folder src/components/.

Langkah Awal: Membuat Card.astro

Buat file baru di src/components/Card.astro. Komponen ini bertugas menerima data (judul dan tautan) lalu menampilkannya.

Cuplikan kode
 
---
// src/components/Card.astro
// 1. Definisikan Props yang akan diterima oleh Card ini
const { title, url } = Astro.props;
---

<div class="card">
  <h2>{title}</h2>
  <a href={url}>Baca Selengkapnya →</a>
</div>

<style>
  .card {
    border: 1px solid #ccc;
    padding: 1rem;
    border-radius: 8px;
    margin-bottom: 1rem;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  }
  a {
    color: #0070f3;
    text-decoration: none;
  }
</style>

3. Apakah kode di index.astro untuk menampilkan judul dipindah ke Card?

Ya, betul sekali! Logika HTML untuk menampilkan judul dan detail postingan dipindahkan ke dalam Card.astro.

Namun, file index.astro (halaman utama) tetap memegang kendali untuk mengambil data (misalnya via API atau Markdown lokal) dan melakukan looping (perulangan) menggunakan .map().

Berikut adalah perubahan cara penulisan di index.astro:

Sebelum Menggunakan Card (Semua menumpuk di index.astro):

Cuplikan kode
 
---
// src/pages/index.astro
// Contoh data postingan (bisa dari API Shopify, Sanity, atau Markdown)
const allPosts = [
  { title: "Mengenal Astro JS", url: "/blog/mengenal-astro" },
  { title: "Teori Dasar Listrik", url: "/blog/dasar-listrik" }
];
---
<html>
  <body>
    <h1>Blog Saya</h1>
    
    {allPosts.map((post) => (
      <div class="post-Lama">
        <h2>{post.title}</h2>
        <a href={post.url}>Baca Selengkapnya</a>
      </div>
    ))}
  </body>
</html>

Sesudah Menggunakan Card (Lebih bersih dan rapi):

Cuplikan kode
 
---
// src/pages/index.astro
// 1. Import komponen Card yang sudah kita buat tadi
import Card from '../components/Card.astro';

const allPosts = [
  { title: "Mengenal Astro JS", url: "/blog/mengenal-astro" },
  { title: "Teori Dasar Listrik", url: "/blog/dasar-listrik" }
];
---
<html>
  <body>
    <h1>Blog Saya</h1>
    
    {allPosts.map((post) => (
      <Card title={post.title} url={post.url} />
    ))}
  </body>
</html>

Analogi Sederhananya:

  • index.astro adalah Manajer Gudang: Dia yang tahu daftar semua barang (data postingan), lalu membagikan tugas ke anak buahnya menggunakan perintah .map().

  • Card.astro adalah Anak Buah: Dia tidak tahu ada berapa banyak total postingan di gudang. Tugas dia hanya menerima satu paket data (title dan url) dari Manajer, lalu membungkusnya ke dalam kotak HTML yang rapi sesuai instruksi.

Dengan cara ini, jika di kemudian hari Anda ingin mengubah tampilan kotak postingan (misalnya menambah gambar atau mengubah warna teks), Anda hanya perlu mengubah file Card.astro saja, tanpa perlu mengotak-atik file halaman utama Anda.

Bikin Soal ExamView Nggak Pakai Ribet: Panduan Import dari File Word untuk Dev & Edukator

Bikin Soal ExamView Nggak Pakai Ribet: Panduan Import dari File Word untuk Dev & Edukator Sebagai orang yang akrab dengan dunia pemrograman dan efisiensi teknologi, melihat pekerjaan copy-paste manual satu per satu terasa sangat tidak efisien. Bayangkan harus memasukkan 100 soal ke ExamView Test Generator dengan cara klik new question, ketik soal, ketik opsi A,

Read More »

Aplikasi Website Akuntansi Usaha

Aplikasi Web Akuntansi dengan data input dan laporan akuntansi lengkap beserta ekspor laporan dalam format PDF dan Excel Harga : Rp.1.200.000Keunggulan:* Gratis Hosting dan Domain * Gunakan Penyimpanan Google Drive * Kapasitas Penyimpanan 15 GB*Aplikasi Ringan dan tidak memerlukan memori banyak* Tidak memerlukan Instalasi * Aplikasi Web dibuka melalui link* Tidak memerlukan biaya perpanjangan tiap

Read More »

Aplikasi Web Absensi Karyawan By Scan QR

Aplikasi Web Absensi dengan sistem input manual dan Scan QR serta laporan absensi lengkap beserta ekspor laporan dalam format PDF dan Excel Harga : Rp.1.200.000Keunggulan:* Gratis Hosting dan Domain * Gunakan Penyimpanan Google Drive * Kapasitas Penyimpanan 15 GB*Aplikasi Ringan dan tidak memerlukan memori banyak* Tidak memerlukan Instalasi * Aplikasi Web dibuka melalui link* Tidak

Read More »

Paket Aplikasi Toko Online

Aplikasi Web Toko Online Harga : Rp.1.500.000Keunggulan:* Gratis Hosting dan Domain * Gunakan Penyimpanan Google Drive * Kapasitas Penyimpanan 15 GB*Aplikasi Ringan dan tidak memerlukan memori banyak* Tidak memerlukan Instalasi * Aplikasi Web dibuka melalui link* Tidak memerlukan biaya perpanjangan tiap tahun Kembali Menu Depan

Read More »

Paket Aplikasi Inventory

Aplikasi Web Inventory Harga : Rp.1.200.000Keunggulan:* Gratis Hosting dan Domain * Gunakan Penyimpanan Google Drive * Kapasitas Penyimpanan 15 GB*Aplikasi Ringan dan tidak memerlukan memori banyak* Tidak memerlukan Instalasi * Aplikasi Web dibuka melalui link* Tidak memerlukan biaya perpanjangan tiap tahun Kembali Ke Menu

Read More »

Paket Absen Sekolah

Aplikasi Web Absen Sekolah Harga : Rp.1.200.000Keunggulan:* Gratis Hosting dan Domain * Gunakan Penyimpanan Google Drive * Kapasitas Penyimpanan 15 GB*Aplikasi Ringan dan tidak memerlukan memori banyak* Tidak memerlukan Instalasi * Aplikasi Web dibuka melalui link* Tidak memerlukan biaya perpanjangan tiap tahun Klik di sini

Read More »