Latihan 2 dari materi Proyek Svelte di Svelte — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Kode awal punya let items = [], let input = "", <h1>Shopping List</h1>, dan <p>Total: {items.length} item</p>. Biarkan semuanya.
Di <script>, tulis addItem(): kalau input.trim() kosong, langsung return; kalau gak, items = [...items, { id: Date.now(), name: input }] lalu input = "".
Di bawah <p>, tulis <form on:submit|preventDefault={addItem}> berisi <input bind:value={input} /> dan <button type="submit">Tambah</button>.
Di bawah form, tulis <ul> dengan {#each items as item (item.id)}: satu <li> berisi {item.name} dan <button on:click={() => removeItem(item.id)}>Hapus</button>.
Yang dicek:
Halaman punya <h1> dan <form>.
Kodemu memakai #each, on:submit (atau on:click), bind:value, dan filter( (atau splice().
Penguji mengetik Kopi di kolom isian, menekan tombol bertuliskan persis Tambah, lalu <ul> harus memuat Kopi dan kolom isiannya kosong lagi.
Menekan Tambah dengan kolom kosong gak membuat <li> apa pun.
Dari awal lagi: sebelum ada item, <p> berisi persis Total: 0 item. Sesudah Kopi ditambahkan, Total: 1 item. Lalu sesudah Hapus diklik, gak ada <li> yang tersisa.
Hint
Daftarnya disimpan di variabel items, dan tiap barisnya digambar dari variabel itu. Menambah dan menghapus sama-sama membuat array baru lalu menyimpannya kembali ke items, supaya Svelte 4 tahu ada yang berubah.
addItem menolak kolom kosong, menambah dengan spread lalu assignment, dan mengosongkan input; removeItem memakai filter. Form memanggil addItem tanpa memuat ulang halaman, dan <ul> berisi blok each berkunci item.id.
function addItem() { if (!input.trim()) return; items = [...items, { id: Date.now(), name: input }]; input = "" } function removeItem(id) { items = items.filter((i) => i.id !== id) } lalu <form on:submit|preventDefault={addItem}> <input bind:value={input} /> <button type="submit">Tambah</button> </form>
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...