DOM要素のプロパティにバインドできるのと同様に、コンポーネントのプロップスにバインドできます。たとえば、この<Keypad>コンポーネントの`value`プロップスを、フォーム要素のようにバインドできます。
まず、プロップスをバインド可能としてマークする必要があります。`Keypad.svelte`内で、`$props()`宣言を`$bindable`ルーンを使用して更新します。
Keypad
let { value = $bindable(''), onsubmit } = $props();
次に、`App.svelte`に`bind:`ディレクティブを追加します。
App
<Keypad bind:value={pin} {onsubmit} />
これで、ユーザーがキーパッドを操作すると、親コンポーネントの`pin`の値がすぐに更新されます。
コンポーネントバインディングは控えめに使用してください。特に「単一の情報源」がない場合、数が多すぎるとアプリケーション全体でのデータの流れを追跡するのが困難になる可能性があります。
前へ 次へ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<script>
import Keypad from './Keypad.svelte';
let pin = $state('');
let view = $derived(pin
? pin.replace(/\d(?!$)/g, '•')
: 'enter your pin');
function onsubmit() {
alert(`submitted ${pin}`);
}
</script>
<h1 style="opacity: {pin ? 1 : 0.4}">
{view}
</h1>
<Keypad {onsubmit} />