Skip to main content

Not all application state belongs inside your application's component hierarchy. Sometimes, you'll have values that need to be accessed by multiple unrelated components, or by a regular JavaScript module.

In Svelte, we do this with stores. A store is simply an object with a subscribe method that allows interested parties to be notified whenever the store value changes. In App.svelte, count is a store, and we're setting count_value in the count.subscribe callback.

Open stores.js to see the definition of count. It's a writable store, which means it has set and update methods in addition to subscribe.

Now, in Incrementer.svelte, wire up the + button:

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

Clicking the + button should now update the count. Do the inverse for Decrementer.svelte.

Finally, in Resetter.svelte, implement reset:

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