Latihan 1: Proyek Solid — SolidJS

Latihan 1 dari materi Proyek Solid di SolidJS — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Kode awal sudah punya signal todos (array kosong) dan input (string kosong), plus addTodo yang baru memanggil e.preventDefault(). Lengkapi:

  1. Impor juga createMemo dan For (dan Show kalau perlu) dari "solid-js".
  2. Buat const remaining = createMemo(() => todos().filter((t) => !t.done).length).
  3. Di addTodo, sesudah e.preventDefault(): if (!input().trim()) return, lalu setTodos((t) => [...t, { id: Date.now(), text: input(), done: false }]), lalu setInput("").
  4. Buat toggleTodo(id) yang membalik done lewat map, dan removeTodo(id) yang memakai setTodos((t) => t.filter((todo) => todo.id !== id)).
  5. Di dalam <div>: <h1>Todo App</h1>, <p>{remaining()} tersisa</p>, lalu <form onSubmit={addTodo}> berisi <input value={input()} onInput={(e) => setInput(e.target.value)} /> dan <button type="submit">Tambah</button>.
  6. Di bawah form, <ul> dengan <For each={todos()}>: tiap <li> berisi checkbox onChange={() => toggleTodo(todo.id)}, teks todo, dan <button onClick={() => removeTodo(todo.id)}>Hapus</button>.

Yang dicek:

Hint