Lompat ke konten utama
←

React Dasar

Pelajaran 12 dari 17

Event dan state

Memperbarui objek dan larik di state

Setelah pelajaran ini kamu bisa memperbarui objek dan larik di state dengan membuat salinan baru (spread, filter, map) alih-alih mengubah isinya.

±13 menitDiperiksa 24 Okt 2026

Latihan di pelajaran ini butuh akun gratis. Progres, kode, dan catatanmu hanya tersimpan di browser ini. Masuk untuk menyimpannya

Materi

State boleh berisi objek dan larik, tetapi isinya diperlakukan hanya-baca. Mengubah isinya langsung, misalnya pelanggan.poin += 10 atau keranjang.push(barang), disebut mutasi. Tanpa fungsi set, React tidak tahu ada yang berubah. Memanggil set dengan objek yang sama setelah dimutasi juga tidak menolong: React membandingkan nilai lama dan baru dengan Object.is, menganggap objek yang sama tidak berubah, dan melewati render ulang.

Cara yang benar adalah membuat objek atau larik baru lalu mengirimkannya ke set. Untuk objek, salin isinya dengan spread, lalu timpa properti yang berubah: setPelanggan({ ...pelanggan, kota: "Bandung" }). Spread hanya menyalin satu tingkat, jadi objek bersarang perlu disalin di setiap tingkat yang berubah.

TujuanHindari (mengubah larik)Pakai (larik baru)
Menambahpush, unshift[...larik, baru]
Menghapuspop, shift, splicefilter, slice
Mengganti itemsplice, larik[i] = …map
Mengurutkansort, reversesalin dulu: [...larik].sort(…)
setPesanan([...pesanan, { id: 7, menu: "Gado-gado" }]);
setPesanan(pesanan.filter((p) => p.id !== 3));
setPesanan(pesanan.map((p) => (p.id === 5 ? { ...p, siap: true } : p)));

Menyalin larik tidak menyalin objek di dalamnya. Larik [...pesanan] berisi objek-objek yang sama dengan larik asal, sehingga mengubah salah satu objek lewat salinan ikut mengubah larik asal. Item yang berubah diganti objek baru, seperti di baris map di atas.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke

Tampilkan 1 lagi