Latihan 1 dari materi Pinia Lanjutan di Vue — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Pakai store todo dari komponen utama. Kode awal sudah punya useTodoStore (state todos dan action addTodo), komponen Jumlah yang menampilkan banyaknya todo dari store yang sama di #total, dan const input = ref("").
Ambil store-nya: const store = useTodoStore().
Ambil todos lewat storeToRefs, supaya tetap reaktif setelah dibongkar: const { todos } = storeToRefs(store). Action diambil langsung: const { addTodo } = store.
Buat tambah(): kalau input.value.trim() gak kosong, panggil addTodo(input.value.trim()), lalu kosongkan input.value = "".
Di template: <input id="input" v-model="input" />, <button id="add" @click="tambah">Tambah</button>, dan <ul id="list"> berisi <li v-for="(todo, i) in todos" :key="i">{{ todo }}</li>. Biarkan <component :is="Jumlah" />.
Yang dicek:
#input, #add, dan #list ada.
Setelah Belajar Pinia diketik lalu #add diklik, #list memuat Belajar Pinia, #input kosong lagi, dan #total berbunyi 1 todo.
Kodenya memakai storeToRefs(, v-model, v-for, dan @click.
Hint
State dari store yang dibongkar langsung kehilangan sambungannya ke store. storeToRefs mengubah setiap state jadi ref, jadi hasil bongkarannya tetap ikut berubah. Action cukup dibongkar dari store biasa.
const store = useTodoStore(); const { todos } = storeToRefs(store); const { addTodo } = store. tambah() memanggil addTodo(input.value.trim()) lalu mengosongkan input.