0Pricing
React Academy · Pelajaran

Praktik Terbaik Key dan Ref

Gunakan key yang stabil, hindari masalah index sebagai key, dan gunakan ref callback.

Praktik Terbaik Key dan Ref adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

Selamat Datang

Dalam pelajaran ini, Anda akan mempelajari cara menggunakan kunci daftar dengan benar, alasan penggunaan indeks array sebagai kunci dapat menyebabkan bug, serta cara bekerja dengan ref panggilan balik dan ref yang diteruskan.

Mengapa Kunci Penting

React menggunakan properti `key` untuk melacak item dalam daftar yang berubah, ditambahkan, atau dihapus di antara berbagai render. Kunci yang benar memungkinkan React menggunakan kembali simpul DOM yang ada; kunci yang salah menyebabkan pelepasan dan pemasangan ulang yang tidak perlu.

Kunci Unik yang Stabil

Kunci terbaik adalah ID yang stabil dan unik dari data Anda — seperti ID baris basis data atau UUID. Kunci ini hanya harus unik di antara saudara sekandung, bukan secara global di seluruh halaman.
users.map(user => (
  <UserCard key={user.id} user={user} />
))

Mengapa Indeks sebagai Kunci Bermasalah

Menggunakan indeks array sebagai kunci berfungsi baik untuk daftar statis, tetapi menyebabkan bug pada daftar yang diurutkan atau difilter. Saat item diurutkan ulang, React mencocokkan komponen berdasarkan indeks dan menggunakan kembali simpul DOM yang salah, sehingga nilai masukan dan status animasi menjadi rusak.
// Risky when list can reorder or filter
items.map((item, i) => <Row key={i} {...item} />)

Kapan Indeks sebagai Kunci Dapat Digunakan

Indeks sebagai kunci hanya dapat digunakan jika: (1) daftar tidak pernah diurutkan ulang atau difilter, (2) item tidak memiliki ID stabil, dan (3) item tidak memiliki status lokal (misalnya nilai masukan). Daftar tampilan statis tidak masalah.

Membuat ID Stabil

Jika data Anda tidak memiliki ID, buat ID saat item dibuat (bukan saat render). Anda dapat menggunakan `crypto.randomUUID()` atau pustaka `nanoid`.
const newItem = { id: crypto.randomUUID(), text: 'Buy milk' };

Dasar-Dasar useRef

`useRef` mengembalikan objek yang dapat diubah, yang nilai `.current`-nya tetap ada di berbagai render tanpa menyebabkan render ulang. Fitur ini digunakan untuk menyimpan referensi DOM dan nilai yang dapat diubah, seperti ID pengatur waktu.
const inputRef = useRef(null);
<input ref={inputRef} />
// Access DOM node: inputRef.current.focus();

Ref Panggilan Balik

Alih-alih meneruskan objek ref, Anda dapat meneruskan **ref panggilan balik** — sebuah fungsi yang dipanggil React dengan simpul DOM saat simpul tersebut dipasang dan dengan `null` saat dilepas. Cara ini memungkinkan Anda menyiapkan logika tepat ketika simpul tersedia.
function Input() {
  return (
    <input
      ref={node => {
        if (node) node.focus();
      }}
    />
  );
}

forwardRef untuk Ref Komponen

Komponen fungsi tidak menerima `ref` sebagai properti biasa. Bungkus komponen dengan `React.forwardRef` agar komponen induk dapat memasang ref ke simpul DOM internal.
const FancyInput = React.forwardRef((props, ref) => (
  <input ref={ref} className="fancy" {...props} />
));

// Parent
const inputRef = useRef(null);
<FancyInput ref={inputRef} />

useImperativeHandle

Saat komponen induk menyimpan ref ke komponen anak, Anda dapat mengontrol dengan tepat apa yang ditampilkan komponen tersebut menggunakan `useImperativeHandle`. Cara ini menjaga DOM internal anak tetap privat sekaligus menyediakan API imperatif yang bersih.
const Child = forwardRef((_, ref) => {
  const innerRef = useRef();
  useImperativeHandle(ref, () => ({
    focus: () => innerRef.current.focus(),
  }));
  return <input ref={innerRef} />;
});

Pemeriksaan Singkat

Mengapa Anda harus menghindari penggunaan indeks array sebagai kunci dalam daftar yang dapat diurutkan ulang?

Rangkuman

Gunakan ID data yang stabil sebagai kunci, hindari kunci indeks dalam daftar dinamis, gunakan useRef untuk akses DOM dan nilai yang dapat diubah, gunakan ref panggilan balik untuk logika pemasangan/pelepasan, dan gunakan forwardRef untuk menampilkan ref dari komponen anak.

Berikutnya

Pelajaran berikutnya: **Struktur Folder & Konvensi Penamaan** — Anda akan menata proyek React dengan folder berbasis fitur dan penamaan berkas yang konsisten.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Praktik Terbaik Key dan Ref” gratis?

Ya — teks lengkap “Praktik Terbaik Key dan Ref” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Praktik Terbaik Key dan Ref”?

Gunakan key yang stabil, hindari masalah index sebagai key, dan gunakan ref callback. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Praktik Terbaik Key dan Ref” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Fungsi StrictMode
  2. Komponen Murni dan Menghindari Efek Samping saat Render
  3. Praktik Terbaik Key dan Ref
  4. Struktur Folder dan Konvensi Penamaan
← Kembali ke React Academy