Materi
Memanggil fungsi set tidak mengubah variabel state yang sedang dipakai; fungsi itu meminta render baru dengan nilai baru. Selama satu render, termasuk di dalam penangan event yang dibuat render itu, nilai state tetap seperti potret yang diambil saat render: tidak berubah walaupun set sudah dipanggil.
const [stok, setStok] = useState(10);
function jual() {
setStok(stok - 1);
console.log(stok); // klik pertama mencatat 10, bukan 9
}Akibatnya, setStok(stok - 1) yang ditulis tiga kali dalam satu penangan hanya mengurangi satu. Ketiganya membaca stok yang sama, yaitu 10, dan ketiganya meminta nilai 9. React menunggu sampai seluruh kode di penangan selesai sebelum memproses pembaruan dan merender ulang; pengelompokan ini disebut batching.
Untuk pembaruan yang bergantung pada hasil pembaruan sebelumnya, kirim fungsi updater: setStok((s) => s - 1). React memasukkan fungsi itu ke antrean dan, saat render berikutnya, menjalankan isi antrean berurutan dengan hasil langkah sebelumnya sebagai masukan. Tiga updater berturut-turut mengurangi tiga. Nama parameternya lazim diambil dari huruf awal nama state, seperti s untuk stok.