すべてのアプリケーションの状態がアプリケーションのコンポーネント階層の内部にあるわけではありません。場合によっては、関連のない複数のコンポーネントや、通常の JavaScript モジュールからアクセスする必要のある値があります。
Svelte では、これを store(ストア) で行います。store とは、単に、値が変化するたびに関係者に通知するsubscribe
メソッドを備えたオブジェクトです。App.svelte
の count
は store であり、count.subscribe
のコールバックの中で count_value
を設定しています。
stores.js
を開いて count
の定義を見てください。これは書き込み可能な store です。つまり、 subscribe
メソッドに加えて、set
と update
メソッドも兼ね備えています。
次に、Incrementer.svelte
で、+
ボタンと連動するようにします。
Incrementer.svelte
function increment() {
count.update((n) => n + 1);
}
+
ボタンをクリックすると、count が更新されます。Decrementer.svelte
に戻す機能を実装してみてください。
最後に、Resetter.svelte
で reset
を実装します。
Resetter.svelte
function reset() {
count.set(0);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script>
import { count } from './stores.js';
import Incrementer from './Incrementer.svelte';
import Decrementer from './Decrementer.svelte';
import Resetter from './Resetter.svelte';
let count_value;
count.subscribe((value) => {
count_value = value;
});
</script>
<h1>The count is {count_value}</h1>
<Incrementer />
<Decrementer />
<Resetter />