Lompat ke konten utama
←

React Dasar

Pelajaran 15 dari 17

Formulir, berbagi state, dan Effect

Mengangkat state dan komposisi

Setelah pelajaran ini kamu bisa memindahkan state yang dipakai bersama ke komponen induk terdekat, mengirimkannya ke anak lewat props bersama penangan perubahannya, dan menyusun halaman dari komponen terkontrol.

±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

Kadang dua komponen harus selalu berubah bersama. Contohnya kotak pencarian dan daftar produk: daftar menyaring menurut kata yang diketik di kotak. Bila kata itu disimpan di state kotak pencarian, daftar tidak bisa membacanya, karena state adalah milik privat komponennya.

Jalan keluarnya disebut mengangkat state: hapus state dari anak-anaknya, pindahkan ke induk terdekat yang membungkus keduanya, lalu kirim ke bawah lewat props. Anak yang perlu mengubah nilai itu menerima penangan dari induk, misalnya onUbah, dan memanggilnya alih-alih memanggil set sendiri.

function IsianJumlah({ label, nilai, onUbah }) {
  return <label>{label} <input value={nilai} onChange={(e) => onUbah(e.target.value)} /></label>;
}

export default function Pesanan() {
  const [jumlah, setJumlah] = useState("1");
  return (
    <>
      <IsianJumlah label="Kasir" nilai={jumlah} onUbah={setJumlah} />
      <IsianJumlah label="Dapur" nilai={jumlah} onUbah={setJumlah} />
    </>
  );
}

Setelah state diangkat, anak menjadi komponen terkontrol: informasi pentingnya datang dari props, bukan dari state sendiri, sehingga induk menentukan perilakunya. Komponen yang menyimpan state sendiri disebut tidak terkontrol; lebih mudah dipakai, tetapi tidak bisa dikoordinasikan dengan komponen lain.

Setiap potong state punya satu pemilik, yang dalam dokumentasi React disebut satu sumber kebenaran. Komponen lain menerima nilainya lewat props, bukan menyimpan salinannya sendiri. Halaman yang lebih besar disusun dengan cara yang sama: komponen kecil yang menerima data dan penangan lewat props, digabung induk yang memegang state, dibantu komponen pembungkus yang menerima children.

Latihan

0/3 lulus

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

Latihan 3 dari 3

Halaman kasir punya KeranjangSamping dan TombolKeranjang di header. Keduanya harus menampilkan jumlah barang yang sama, dan keduanya dirender oleh HalamanKasir. Di mana state keranjang disimpan?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke

Tampilkan 1 lagi