Proyek Akhir: Aplikasi To-Do List

Menggabungkan state, list, form, event, dan komponen dalam satu aplikasi lengkap.

Part 23 dari 23 ± 60 menit Gratis

Selamat sampai di proyek akhir!

Kamu akan membangun To-Do List lengkap dengan menambah, menandai selesai, menghapus, dan memfilter tugas. Proyek ini memakai hampir semua konsep React yang sudah kamu pelajari.

Spesifikasi (ikuti nama class persis agar bisa dinilai)

ElemenAturan
Form<form> berisi <input name="judul"> dan tombol submit
TambahSubmit menambah tugas; judul kosong/spasi saja diabaikan; input dikosongkan setelah tambah
Daftar<ul> berisi <li> per tugas, berisi <span className="judul"> dan tombol .hapus
SelesaiKlik .judul menandai selesai: <li> mendapat class selesai (klik lagi membatalkan)
Sisa<p className="sisa">N tugas tersisa</p> — N = jumlah yang belum selesai
FilterTombol [data-filter="semua"], [data-filter="aktif"], [data-filter="selesai"] memfilter daftar

Rancangan komponen & state

  • State di App (atau di TodoApp): tugas (array { id, judul, selesai }), filter ("semua" | "aktif" | "selesai"), dan judulBaru (input terkontrol).
  • Nilai turunan (jangan jadikan state): tugasTampil (hasil filter) dan sisa (jumlah yang belum selesai).
  • Kamu boleh memecah menjadi komponen kecil: FormTugas, ItemTugas, FilterBar.

Langkah pengerjaan

  1. Siapkan state dan input terkontrol.
  2. tambah(e): preventDefault, trim() judul, abaikan jika kosong, tambahkan { id, judul, selesai: false } ke array baru, kosongkan input.
  3. toggle(id): map array, ubah selesai pada item yang cocok.
  4. hapus(id): filter array.
  5. Hitung sisa dan tugasTampil saat render.
  6. Render daftar dengan key={t.id}.

Pola ID unik

Gunakan counter di state (const [nomor, setNomor] = useState(1)) atau crypto.randomUUID(). Jangan memakai index sebagai ID.

Pengembangan lanjutan

  • Simpan ke localStorage dengan custom hook useLocalStorage.
  • Tambahkan edit judul, tenggat waktu, dan kategori.
  • Pindahkan state ke useReducer + Context.
  • Ambil/ simpan data ke API server (React Query).
  • Tulis test dengan Vitest dan React Testing Library.
  • Deploy ke Vercel atau Netlify (npm run build).

Langkah selanjutnya setelah course ini

  1. TypeScript untuk React agar lebih aman.
  2. Next.js untuk routing berbasis folder dan SSR.
  3. React Query / Zustand untuk data server dan state global.
  4. Testing, aksesibilitas, dan performa.
  5. Bangun 2-3 proyek portofolio dan deploy.

Setelah lulus bab ini, kerjakan Quiz Arena. Nilai minimal 70 membuka sertifikat kelulusanmu. Selamat — kamu sudah menguasai dasar React! 🎉

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X