原則、Svelteのデータフローはトップダウンです。親コンポーネントは子コンポーネントにプロパティをセットできますし、コンポーネントは要素に属性をセットできますが、その逆はできません。
時々、そのルールを破ると便利なことがあります。このコンポーネントの <input>
要素の例で考えてみましょう。oninput
イベントハンドラを追加して、name
の値を event.target.value
に設定できますが、それは少し…面倒(boilerplatey)です。想像がつくと思いますが、他のフォーム要素ではそれがさらに悪化します。
代わりに、bind:value
ディレクティブを使用することができます。
App
<input bind:value={name}>
これは name
の値が変更されると input の値が更新されるだけでなく、input の値が変更されると name
の値が更新されることを意味します。
previous next
1
2
3
4
5
6
7
8
<script>
let name = $state('world');
</script>
<input value={name} />
<h1>Hello {name}!</h1>