Memahami bind:value Antara Parent dan Child di Svelte
1
min read .
Published on
Salah satu fitur keren di Svelte adalah two-way binding dengan bind:value.
Dengan binding ini, data di parent dan child component bisa saling sinkron secara otomatis tanpa perlu kode boilerplate.
Mari kita lihat contoh sederhana dengan membuat input field yang terhubung antara parent dan child.
1. Child Component: InputField.svelte
Buat file src/lib/components/InputField.svelte:
<script lang="ts">
export let value: string = "";
</script>
<h2>Child Component</h2>
<input type="text" bind:value />
<p>Isi input (child): {value}</p>Penjelasan:
export let value→ mendeklarasikan propvalueyang bisa diisi dari parent.bind:value→ membuat input otomatis updatevaluedan sebaliknya.{value}→ menampilkan isi input langsung dari sisi child.
2. Parent Component: +page.svelte
Sekarang buka file src/routes/+page.svelte:
<script lang="ts">
import InputField from '$lib/components/InputField.svelte';
let name: string = "";
</script>
<h1>bind:value</h1>
<InputField bind:value={name} />
<p>Isi dari parent: {name}</p>Penjelasan:
let name = ""→ state di parent.<InputField bind:value={name} />→ menghubungkannamedi parent denganvaluedi child.- Jika user mengetik di input child → otomatis update
namedi parent. - Jika
namedi parent berubah → input di child ikut berubah.
3. Hasil
Saat aplikasi dijalankan:
- Anda mengetik sesuatu di input field (child). → Teks langsung muncul di child dan di parent.
- Jika parent mengubah variabel
name, maka input child otomatis mengikuti.
Dengan kata lain, bind:value membuat two-way binding antara parent dan child jadi sangat sederhana.
Kesimpulan
Konsep bind:value di Svelte:
- Child cukup
export let valuedan gunakanbind:valuedi<input>. - Parent cukup memanggil child dengan
bind:value={state}. - Tidak perlu bikin event
on:inputmanual untuk sinkronisasi data.
Fitur ini membuat komunikasi antara parent-child di Svelte lebih ringkas dibanding framework lain yang biasanya butuh banyak boilerplate.