一般的に、Svelteでのデータフローはトップダウンです。親コンポーネントは子コンポーネントにプロップスを設定でき、コンポーネントは要素に属性を設定できますが、その逆はできません。
しかし、このルールを破ることが便利な場合があります。このコンポーネントの<input>
要素を考えてみましょう。name
の値をevent.target.value
に設定するoninput
イベントハンドラを追加することはできますが、少し...冗長です。他のフォーム要素ではさらに悪化します。
代わりに、bind:value
ディレクティブを使用できます。
アプリ
<input bind:value={name}>
これは、name
の値の変更によって入力値が更新されるだけでなく、入力値の変更によってname
が更新されることを意味します。
1
2
3
4
5
6
7
8
<script>
let name = $state('world');
</script>
<input value={name} />
<h1>Hello {name}!</h1>