Keranjang Belanja Mini
Membangun keranjang belanja: tambah produk, ubah jumlah, hapus, dan hitung total otomatis.
Jantung E-Commerce
Keranjang belanja adalah fitur paling kritis di toko online: tempat produk "menunggu" sebelum checkout. Modul ini menggabungkan semua yang sudah dipelajari: render data, state array, event delegation, dan perhitungan.
Langkah Membangun
HTML: Dua kolom: daftar produk (kartu + tombol "Tambah") dan panel keranjang (daftar item, kontrol jumlah +/-, tombol hapus, total harga, tombol checkout).
CSS: Layout dua kolom dengan grid yang menjadi satu kolom di HP. Panel keranjang sticky di desktop agar selalu terlihat saat scroll produk.
JS: State keranjang sebagai array object { id, nama, harga, jumlah }.
- Tambah: Jika produk sudah ada, naikkan jumlah. Jika belum, push object baru.
- Ubah jumlah: Tombol +/- mengubah jumlah. Jika jumlah jadi 0, hapus item.
- Hapus: Filter array.
- Total:
reduceuntuk menjumlahkan harga × jumlah. - Render ulang setiap ada perubahan, dan tampilkan badge jumlah item di judul keranjang.
reduce adalah cara fungsional menjumlahkan: keranjang.reduce((total, item) => total + item.harga * item.jumlah, 0).
Kesalahan Umum
- Duplikat item saat produk sama ditambahkan dua kali (cek id dulu).
- Total tidak update setelah hapus (selalu hitung ulang dari array, jangan simpan total di variabel terpisah).
- Jumlah bisa minus (batasi minimal 1, atau hapus saat 0).
export default function App(): JSX.Element { return <h1>Hello world</h1> }
Tantangan
Tantangan: Kode Diskon
Tambahkan input kode diskon di panel keranjang. Kode "HEMAT10" memberi diskon 10 persen, "HEMAT20" memberi 20 persen. Tampilkan baris diskon dan total setelah diskon.