Bab 3: Menampilkan List & Props

Merender daftar data dan memecah UI menjadi komponen yang lebih kecil.

Merender List dengan `.map()`

Di dunia nyata, Anda akan sering bekerja dengan data dalam bentuk array. Untuk menampilkannya di React, kita menggunakan metode `.map()` dari JavaScript untuk mengubah setiap item data menjadi sebuah elemen JSX.

Props & Komponen Reusable

Untuk menjaga kode tetap rapi, kita bisa membuat komponen terpisah untuk setiap item dalam list (misalnya, sebuah `UserCard`). Kemudian, kita mengirim data untuk setiap pengguna ke komponen tersebut melalui props.

Contoh: Menampilkan Daftar Pengguna

Di bawah ini adalah contoh lengkap bagaimana kita mendefinisikan data, membuat komponen `UserCard`, dan menampilkannya menggunakan `.map()`.

Contoh Kode:

// 1. Data kita (sebuah array of objects)
const users = [
  { id: 1, name: 'Citra Kirana', ... },
  { id: 2, name: 'Doni Setiawan', ... },
  { id: 3, name: 'Eka Lestari', ... },
];

// 2. Komponen untuk satu kartu pengguna
// Menerima 'user' sebagai prop
function UserCard({ user }) {
  return (
    <div className="user-card">
      <img src={user.avatar} alt={user.name} />
      <h3>{user.name}</h3>
      <p>{user.job}</p>
    </div>
  );
}

// 3. Tampilkan list di komponen utama
function UserList() {
  return (
    <div>
      {users.map(user => (
        <UserCard key={user.id} user={user} />
      ))}
    </div>
  );
}

Hasil Tampilan:

Avatar Citra Kirana

Citra Kirana

Frontend Developer

Avatar Doni Setiawan

Doni Setiawan

Backend Developer

Avatar Eka Lestari

Eka Lestari

UI/UX Designer

Aturan Penting: `key` Prop

Saat merender sebuah list, React perlu cara untuk mengidentifikasi setiap item secara unik. Untuk itu, kita wajib memberikan sebuah prop spesial bernama key pada elemen terluar di dalam loop `.map()`.

Nilai `key` harus berupa string atau angka yang unik di antara (saudara)-nya. Biasanya, kita menggunakan ID dari data, seperti <UserCard key={user.id} />. Ini sangat penting untuk performa dan menghindari bug yang tidak terduga.