Loading, Error, Empty, dan Success State
Membuat UI async yang jujur saat data sedang dimuat, kosong, gagal, atau berhasil.
Tujuan belajar
- Membedakan loading, error, empty, dan success state
- Menampilkan status yang jujur untuk user
- Menghindari UI yang menggantung saat request gagal
Isi lesson
6 blok- 1.Async UI harus menjawab apa yang sedang terjadiBelum selesaiWajib
- 2.Empty berbeda dari errorBelum selesaiWajib
- 3.Empat state dalam flow asyncBelum selesaiWajib
- 4.Coding practiceBelum selesaiWajib
- 5.Checklist local appBelum selesaiWajib
- 6.RingkasanBelum selesaiWajib
Async UI harus menjawab apa yang sedang terjadi
WajibUser tidak melihat Promise. User melihat halaman. Karena itu, async code yang baik tidak cukup hanya berhasil di console. UI perlu menjelaskan apa yang terjadi: data sedang dimuat, tidak ada data, data gagal dimuat, atau data berhasil tampil.
Empat state ini membuat app terasa lebih jujur dan tidak membuat user menebak-nebak.
Bagian ini memengaruhi progres lesson.
Catatan penting
WajibEmpty berbeda dari error
Empty berarti request berhasil, tetapi datanya kosong. Error berarti request atau proses membaca data gagal. Dua kondisi ini perlu pesan yang berbeda karena tindakan user berikutnya juga berbeda.
Bagian ini memengaruhi progres lesson.
Empat state dalam flow async
Wajibasync function loadTips() {
showLoading();
try {
const tips = await getTips();
if (tips.length === 0) {
showEmpty();
return;
}
showSuccess(tips);
} catch (error) {
showError("Tips gagal dimuat.");
console.error(error);
}
}Flow ini selalu memberi state yang jelas: loading saat mulai, empty jika data kosong, success jika data ada, dan error jika proses gagal.
Bagian ini memengaruhi progres lesson.
Coding practice
WajibDibuka di workspace khususRender async UI states
Latihan menampilkan loading, empty, success, dan error state untuk async operation.
Tujuan awal: Fokus di tab JS.
Practice ini dibuka di workspace khusus. Buka practice untuk memakai editor, preview, dan cek otomatis.
Tombol selesai aktif setelah semua validasi wajib lolos.
Checklist local app
WajibCek local Vanilla JavaScript app kamu:
- Ada pesan loading saat data mulai diminta.
- Ada empty state jika request berhasil tetapi data kosong.
- Ada error state jika request gagal.
- Ada success state jika data berhasil dirender.
- User tidak dibiarkan melihat loading selamanya.
- Console tetap menyimpan detail error untuk debugging.
Checklist ini untuk local project kamu. Tandai selesai setelah kamu benar-benar mengecek behavior di browser.
Bagian ini memengaruhi progres lesson.
Ringkasan
Wajib- Loading state memberi tahu user bahwa proses sedang berjalan.
- Empty state menjelaskan data kosong tanpa menyebutnya error.
- Error state menjelaskan kegagalan dengan pesan yang bisa dipahami.
- Success state menampilkan data saat operasi berhasil.
- Berikutnya, kamu akan memberi user tindakan retry saat request gagal.
Bagian ini memengaruhi progres lesson.
Langkah berikutnya
Selesaikan bagian penting lesson ini
Lanjutkan blok wajib berikutnya: Async UI harus menjawab apa yang sedang terjadi.