Mengapa React Peduli Tentang Kunci?
Untuk memahami hal ini, kita harus melihat bagaimana React menangani layar. React menggunakan Virtual DOM untuk melacak apa yang sedang terlihat. Saat data Anda berubah, React tidak menghapus seluruh layar dan menggambar ulang dari awal — hal ini akan membuat aplikasi Anda sangat lambat.
Sebaliknya, ini membandingkan cuplikan lama aplikasi Anda dengan cuplikan baru dan hanya memperbarui elemen HTML persis yang berubah.
Dalam hal daftar, React menghadapi teka-teki besar. Jika Anda menambahkan sebuah item, menghapus sebuah item, atau menyusun ulang daftarnya, bagaimana React mengetahuinya yang elemen DOM tertentu cocok yang item dalam array JavaScript Anda?
Itu terlihat pada key. Kuncinya adalah paspor permanen dan unik untuk daftar spesifik tersebut.
Inilah Yang Terjadi Saat Daftar Bergeser
Jika daftar Anda benar-benar statis — artinya tidak pernah berubah, tidak pernah diurutkan, dan tidak pernah ada item yang ditambahkan atau dihapus — gunakan key={index} tidak akan merusak apa pun.
Namun saat daftar Anda menjadi dinamis, pintasan indeks gagal total.
Mendapatkan Shreyashcerita di kotak masuk Anda
Bergabunglah dengan Medium secara gratis untuk mendapatkan pembaruan dari penulis ini.
Bayangkan Anda memiliki daftar tiga tugas:
- Indeks 0: Beli bahan makanan
- Indeks 1: Membersihkan ruangan
- Indeks 2: Pelajari React
Anda memutuskan untuk menghapus “Beli bahan makanan” (Indeks 0) dari bagian atas daftar. Inilah tepatnya bagaimana React melihat pembaruan di balik layar:
- React memiliki tiga elemen yang dipetakan ke kunci 0, 1, dan 2.
- Anda menghapus item pertama. Array sekarang hanya memiliki dua item: “Bersihkan ruangan” dan “Study React”. Karena Anda menggunakan indeks array sebagai kuncinya, “Bersihkan ruangan” secara otomatis menjadi Indeks 0, dan “Study React” menjadi Indeks 1.
- React membandingkan daftar lama dengan daftar baru. Ia melihat bahwa kunci 0 masih ada (tetapi sekarang berisi teks berbeda), kunci 1 masih ada (dengan teks berbeda), dan kunci 2 hilang.
- React mengira Anda baru saja mengedit teks item 0 dan 1, dan menghapus item 2. Jika item 0 memiliki status internal — seperti kotak centang yang dicentang atau kolom input aktif — status yang dicentang tersebut akan tetap menempel pada elemen di kunci 0. Kotak centang Anda sekarang dicentang pada tugas yang salah!
Karena indeksnya berubah, React memetakan status daftar internal yang lama ke item data yang sepenuhnya salah. Teks diperbarui, namun status tetap menempel pada indeks.
Cara Mengatasinya: Gunakan Pengidentifikasi yang Stabil dan Unik
Solusi untuk masalah ini sederhana saja: Kunci harus stabil, dapat diprediksi, dan unik. Mereka harus dimiliki secara langsung oleh objek data itu sendiri, bukan pada posisi array.
Perbaiki 1: Gunakan ID Basis Data
Jika data Anda berasal dari database (seperti MongoDB atau API publik), data tersebut hampir selalu dilengkapi dengan pengenal unik seperti id atau _id. Selalu default untuk ini.
// Safe, stable, and completely predictable
items.map((item) => (
<TodoItem key={item.id} todo={item} />
));
Meskipun Anda menghapus item pertama, “Bersihkan ruangan” tetap mempertahankan ID yang sama persis. React melihat ID yang cocok, menjaga status internalnya tetap utuh, dan memperbarui DOM secara akurat.
Perbaiki 2: Hasilkan ID Unik pada Pembuatan
Jika Anda membuat item secara lokal dalam status aplikasi Anda (seperti daftar tugas lokal), buatlah ID unik pada saat yang tepat item tersebut dibuattidak selama fase render.
const addTodo = (text) => {
const newTodo = {
id: crypto.randomUUID(), // Generates a unique string like "de305d54-75b4-431b-adb2..."
text: text
};
setTodos([...todos, newTodo]);
};
(Catatan: Hindari membuat kunci acak seperti key={Math.random()} langsung di dalam milikmu .map() fungsi. Melakukan hal itu akan memaksa React untuk menghasilkan kunci baru pada setiap render, menghapus seluruh status komponen dan memperlambat aplikasi Anda.)
PakarPBN
A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.
In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.
The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.