Aplikasi Todo List Dasar
Aplikasi catatan tugas: tambah, centang selesai, dan hapus, aplikasi mini pertama yang lengkap.
Kenapa Todo App?
Todo list adalah "Hello World"-nya aplikasi nyata: ia punya input, daftar data, dan tiga operasi dasar (tambah, ubah status, hapus). Pola ini adalah fondasi semua aplikasi CRUD (Create, Read, Update, Delete): kasir, inventaris, media sosial, semuanya CRUD.
Langkah Membangun
HTML: Input teks + tombol "Tambah", dan <ul id="daftar"> kosong sebagai wadah tugas.
CSS: Tampilan aplikasi sungguhan: kartu putih di tengah, tiap item tugas berupa baris dengan checkbox, teks, dan tombol hapus. Tugas selesai: teks tercoret (text-decoration: line-through) dan memudar.
JS: Inilah intinya, pola CRUD:
- Create: Ambil nilai input, buat objek
{ teks, selesai: false }, masukkan ke arraytodos, render ulang. - Read/Render: Fungsi
render()membangun ulang<li>dari array. Satu sumber kebenaran: array, bukan DOM. - Update: Klik item -> balik
selesai(toggle), render ulang. - Delete: Klik tombol × -> hapus dari array dengan
spliceataufilter, render ulang.
Tambahan UX: tekan Enter di input = tambah (tanpa klik tombol), input kosong ditolak, dan penghitung "X tugas tersisa".
Kesalahan Umum
- Menyimpan status di DOM saja (class) tanpa array data, sehingga sulit dikembangkan (tambah filter jadi mustahil).
- Lupa membersihkan input setelah menambah.
- Event listener dipasang ulang setiap render dengan cara yang menumpuk (render ulang innerHTML lalu pasang listener baru tiap kali, atau pakai event delegation).
export default function App(): JSX.Element { return <h1>Hello world</h1> }
Tantangan
Tantangan: Filter Tugas
Tambahkan 3 tombol filter: "Semua", "Aktif", "Selesai". Hanya tugas yang sesuai filter yang tampil, dan penghitung menyesuaikan.