]> git.ipfire.org Git - thirdparty/vuejs/pinia.git/commitdiff
docs: note about subscription flush
authorEduardo San Martin Morote <posva13@gmail.com>
Fri, 1 Nov 2024 12:12:32 +0000 (13:12 +0100)
committerEduardo San Martin Morote <posva13@gmail.com>
Fri, 1 Nov 2024 12:12:32 +0000 (13:12 +0100)
Close vuejs/pinia#2819

packages/docs/core-concepts/state.md

index 8c6052bc141f2a77370cda8d5c0c21dc8ec10bd8..9c47bff68e701c8f8988f9146a02eb3d05daf60a 100644 (file)
@@ -252,6 +252,19 @@ cartStore.$subscribe((mutation, state) => {
 })
 ```
 
+### Flush timing
+
+Under the hood, `$subscribe()` uses Vue's `watch()` function. You can pass the same options as you would with `watch()`. This is useful when you want to immediately trigger subscriptions after **each** state change:
+
+```ts{4}
+cartStore.$subscribe((state) => {
+  // persist the whole state to the local storage whenever it changes
+  localStorage.setItem('cart', JSON.stringify(state))
+}, { flush: 'sync' })
+```
+
+### Detaching subscriptions
+
 By default, _state subscriptions_ are bound to the component where they are added (if the store is inside a component's `setup()`). Meaning, they will be automatically removed when the component is unmounted. If you also want to keep them after the component is unmounted, pass `{ detached: true }` as the second argument to _detach_ the _state subscription_ from the current component:
 
 ```vue