Latihan 1 dari materi useEffect Lanjutan di React — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Bikin timer yang menampilkan detik berjalan di <span id="timer">, mulai dari 0. Kode awal sudah punya state seconds dari useState(0) dan <span id="timer">{seconds}</span>. Biarkan keduanya.
Di dalam App, panggil useEffect. Argumen keduanya dependency array kosong, jadi effect-nya ditutup dengan }, []) dan timernya dipasang sekali.
Di dalam effect, pasang setInterval dengan jeda 1000 ms. Function di dalam setInterval memanggil setSeconds untuk menaikkan angkanya 1, dengan updater function setSeconds((s) => s + 1). setSeconds(seconds + 1) di sini membeku di 1, karena effect dengan [] cuma pernah melihat seconds bernilai 0.
Simpan id-nya (const id = setInterval(...)), lalu return cleanup berbentuk arrow function, return () => ..., yang memanggil clearInterval(id).
Yang dicek: #timer ada, kodenya memakai useState, useEffect, setInterval yang memanggil setter dengan updater function, return () => yang berisi clearInterval, dan dependency array kosong []. useState dan useEffect sudah tersedia di editor. Baris import boleh ditulis seperti di proyek sungguhan, tapi gak wajib.
Hint
Interval jalan terus sampai dihentikan. Jadi effect yang memasangnya juga harus me-return cara menghentikannya, dan effect itu cukup dipasang sekali.
Bentuknya: useEffect(() => { const id = setInterval(..., 1000); return () => ...; }, []). Yang di-return adalah function, dan array kosong di akhir membuat effect dipasang sekali.
Isi effect-nya: const id = setInterval(() => setSeconds((s) => s + 1), 1000); return () => clearInterval(id); lalu tutup dengan }, [])
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...