Skip to main content

すべてのアプリケーションの状態がアプリケーションのコンポーネント階層の内部にあるわけではありません。場合によっては、関連のない複数のコンポーネントや、通常の JavaScript モジュールからアクセスする必要のある値があります。

Svelte では、これを store(ストア) で行います。store とは、単に、値が変化するたびに関係者に通知するsubscribe メソッドを備えたオブジェクトです。App.sveltecount は store であり、count.subscribe のコールバックの中で count_value を設定しています。

stores.js を開いて count の定義を見てください。これは書き込み可能な store です。つまり、 subscribe メソッドに加えて、setupdate メソッドも兼ね備えています。

次に、Incrementer.svelte で、+ ボタンと連動するようにします。

Incrementer.svelte
function increment() {
	count.update((n) => n + 1);
}

+ ボタンをクリックすると、count が更新されます。Decrementer.svelte に戻す機能を実装してみてください。

最後に、Resetter.sveltereset を実装します。

Resetter.svelte
function reset() {
	count.set(0);
}

Next: Auto-subscriptions

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 />
 
initialising