React Academy · Pelajaran

Amalan Terbaik Kunci dan Ref

Gunakan kunci stabil, elakkan masalah indeks sebagai kunci dan gunakan ref panggilan balik.

Pelajaran 3 daripada 413 langkah

Amalan Terbaik Kunci dan Ref ialah pelajaran React Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran React Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Selamat Datang

Dalam pelajaran ini, anda akan mempelajari cara menggunakan kunci senarai dengan betul, sebab penggunaan indeks tatasusunan sebagai kunci menyebabkan pepijat dan cara bekerja dengan rujukan panggil balik serta rujukan yang diteruskan.

Mengapa Kunci Penting

React menggunakan sifat `key` untuk menjejak elemen dalam senarai yang berubah, ditambah atau dibuang antara render. Kunci yang betul membolehkan React menggunakan semula nod DOM sedia ada; kunci yang salah menyebabkan nyahpemasangan dan pemasangan semula yang tidak diperlukan.

Kunci Unik yang Stabil

Kunci terbaik ialah ID yang stabil dan unik daripada data anda — seperti ID baris pangkalan data atau UUID. Kunci ini hanya perlu unik dalam kalangan elemen seinduk, bukan secara global di seluruh halaman.
users.map(user => (
  <UserCard key={user.id} user={user} />
))

Mengapa Indeks sebagai Kunci Bermasalah

Menggunakan indeks tatasusunan sebagai kunci berfungsi dengan baik untuk senarai statik, tetapi menyebabkan pepijat dalam senarai yang diisih atau ditapis. Apabila elemen disusun semula, React memadankan komponen berdasarkan indeks dan menggunakan semula nod DOM yang salah, lalu merosakkan nilai masukan dan keadaan animasi.
// Risky when list can reorder or filter
items.map((item, i) => <Row key={i} {...item} />)

Bila Indeks sebagai Kunci Boleh Diterima

Indeks sebagai kunci hanya boleh diterima apabila: (1) senarai tidak pernah disusun semula atau ditapis, (2) elemen tidak mempunyai ID stabil dan (3) elemen tidak mempunyai keadaan setempat (contohnya nilai masukan). Senarai paparan statik tidak bermasalah.

Menjana ID Stabil

Jika data anda tidak mempunyai ID, jana satu ID semasa anda mencipta elemen itu (bukan semasa render). Anda boleh menggunakan `crypto.randomUUID()` atau pustaka `nanoid`.
const newItem = { id: crypto.randomUUID(), text: 'Buy milk' };

Asas useRef

`useRef` mengembalikan objek boleh ubah yang nilai `.current`-nya kekal antara render tanpa menyebabkan render semula. Ia digunakan untuk memegang rujukan DOM dan nilai boleh ubah seperti ID pemasa.
const inputRef = useRef(null);
<input ref={inputRef} />
// Access DOM node: inputRef.current.focus();

Rujukan Panggilan Balik

Daripada menghantar objek rujukan, anda boleh menghantar **rujukan panggilan balik** — fungsi yang React panggil dengan nod DOM apabila nod itu dipasang dan dengan `null` apabila nod itu dinyahpasang. Ini membolehkan anda menyediakan logik tepat apabila nod itu tersedia.
function Input() {
  return (
    <input
      ref={node => {
        if (node) node.focus();
      }}
    />
  );
}

forwardRef untuk Rujukan Komponen

Komponen fungsi tidak menerima `ref` sebagai sifat biasa. Balut komponen itu dalam `React.forwardRef` supaya komponen induk boleh melampirkan rujukan pada nod DOM dalaman.
const FancyInput = React.forwardRef((props, ref) => (
  <input ref={ref} className="fancy" {...props} />
));

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

useImperativeHandle

Apabila komponen induk memegang rujukan kepada komponen anak, anda boleh mengawal perkara yang didedahkannya dengan menggunakan `useImperativeHandle`. Ini memastikan DOM dalaman komponen anak kekal peribadi sambil menyediakan API imperatif yang kemas.
const Child = forwardRef((_, ref) => {
  const innerRef = useRef();
  useImperativeHandle(ref, () => ({
    focus: () => innerRef.current.focus(),
  }));
  return <input ref={innerRef} />;
});

Semakan Pantas

Mengapa anda patut mengelakkan penggunaan indeks tatasusunan sebagai kunci dalam senarai yang boleh disusun semula?

Rumusan

Gunakan ID data yang stabil sebagai kunci, elakkan kunci indeks dalam senarai dinamik, gunakan useRef untuk capaian DOM dan nilai boleh ubah, gunakan rujukan panggilan balik untuk logik pemasangan dan nyahpemasangan, serta gunakan forwardRef untuk mendedahkan rujukan daripada komponen anak.

Seterusnya

Pelajaran seterusnya: **Struktur Direktori dan Konvensyen Penamaan** — anda akan menyusun projek React dengan direktori berasaskan ciri dan penamaan fail yang konsisten.
Percuma untuk bermula

Pelajari React dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
88
Pelajaran
324

Soalan Lazim

Adakah pelajaran “Amalan Terbaik Kunci dan Ref” percuma?

Ya — teks penuh “Amalan Terbaik Kunci dan Ref” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus React Academy, tingkat taraf kepada CoddyKit PRO. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Amalan Terbaik Kunci dan Ref”?

Gunakan kunci stabil, elakkan masalah indeks sebagai kunci dan gunakan ref panggilan balik. Anda berlatih React Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan React Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran React Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Amalan Terbaik Kunci dan Ref” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Fungsi StrictMode
  2. Komponen Tulen dan Mengelakkan Kesan Sampingan dalam Paparan
  3. Amalan Terbaik Kunci dan Ref
  4. Struktur Folder dan Konvensyen Penamaan
← Kembali ke React Academy