Latihan 1 dari materi Error Boundaries di React — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Tulis error boundary sungguhan untuk contoh di pelajaran. Kode awal sudah punya Profil, yang membaca user.nama, dan App dengan state user, saldo <p id="saldo">Saldo: Rp 250.000</p>, dan tombol #rusak (Rusakkan data) yang mengubah user jadi null. Tanpa boundary, klik tombolnya membuat Profil error dan seluruh tampilan hilang.
Di atas Profil, tulis class ErrorBoundary extends React.Component dengan state = { hasError: false }.
Tambahkan static getDerivedStateFromError(error) yang mengembalikan { hasError: true }.
Di App, bungkus <Profil user={user} /> saja dengan <ErrorBoundary>. Saldo dan tombolnya tetap di luar.
Tulis React.Component lengkap: Component saja gak tersedia di editor. Baris import boleh ditulis seperti di proyek sungguhan, tapi gak wajib.
Yang dicek:
Sebelum diklik, #profil berbunyi persis Halo, Budi, dan #fallback belum ada.
Sesudah #rusak diklik, #fallback berbunyi persis Terjadi error, dan #saldo tetap berbunyi Saldo: Rp 250.000.
Kodemu punya class ErrorBoundary extends React.Component, static getDerivedStateFromError(, dan <ErrorBoundary> tepat di sekeliling <Profil.
Hint
Error boundary harus class component, karena cuma class yang punya getDerivedStateFromError. Ia menyimpan satu boolean, hasError, dan memilih tampilan dari situ.
getDerivedStateFromError dipanggil React waktu anaknya error saat render, dan yang dikembalikan jadi state baru. render() lalu memilih fallback atau this.props.children. Bungkus Profil saja, supaya saldo tetap tampil.