From 7a83743a565e31c23ed847dd18c5db81c0810d8c Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Wed, 20 Mar 2019 23:30:05 -0400 Subject: [PATCH] more docs --- site/content/docs/04-run-time.md | 71 +++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/site/content/docs/04-run-time.md b/site/content/docs/04-run-time.md index 2bc55d406b..ef60ae11f2 100644 --- a/site/content/docs/04-run-time.md +++ b/site/content/docs/04-run-time.md @@ -268,9 +268,78 @@ Retrieves the context that belongs to the closest parent component with the spec ### svelte/store +The `svelte/store` module exports functions for creating [stores](http://localhost:3000/tutorial/writable-stores). + +--- + +To be considered a store, an object must have a `subscribe` method that returns an `unsubscribe` function. + +```js +const unsubscribe = store.subscribe(value => { + console.log(value); +}); // logs `value` + +// later... +unsubscribe(); +``` + +* `store = writable(value: any)` +* `store = writable(value: any, () => () => void)` + +--- + +Creates a store with additional `set` and `update` methods. + +```js +import { writable } from 'svelte/store'; + +const count = writable(0); + +count.subscribe(value => { + console.log(value); +}); // logs '0' + +count.set(1); // logs '1' + +count.update(n => n + 1); // logs '2' +``` + +--- + +If a function is passed as the second argument, it will be called when the number of subscribers goes from zero to one (but not from one to two, etc). That function can return another function that is called when the number of subscribers goes from one to zero. + +```js +import { writable } from 'svelte/store'; + +const count = writable(0, () => { + console.log('got a subscriber'); + return () => console.log('no more subscribers'); +}); + +count.set(1); // does nothing + +const unsubscribe = count.subscribe(value => { + console.log(value); +}); // logs 'got a subscriber', then '1' + +unsubscribe(); // logs 'no more subscribers' +``` + +* `store = readable((set: (value: any) => void) => () => void)` + +TODO + +* `store = derive(a, (a: any) => any)` +* `store = derive(a, (a: any, set: (value: any) => void) => void)` +* `store = derive([a, ...b], ([a: any, ...b: any[]]) => any)` +* `store = derive([a, ...b], ([a: any, ...b: any[]], set: (value: any) => void) => void)` + +TODO + +* `value: any = get(store)` + TODO -* writable, readable, derive, get ### svelte/motion