docs(middleware): modify both set and setState (#2306)

* docs(middleware): modify `set` and `setState`

* update middleware docs
This commit is contained in:
Charles Kornoelje 2024-02-15 08:21:29 -05:00 committed by GitHub
parent b466a7585e
commit eb8443faa3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 5 additions and 26 deletions

View File

@ -259,7 +259,11 @@ const loggerImpl: LoggerImpl = (f, name) => (set, get, store) => {
set(...a)
console.log(...(name ? [`${name}:`] : []), get())
}
store.setState = loggedSet
const setState = store.setState
store.setState = (...a) => {
setState(...a)
console.log(...(name ? [`${name}:`] : []), store.getState())
}
return f(loggedSet, get, store)
}

View File

@ -284,31 +284,6 @@ clearForest()
[Alternatively, there are some other solutions.](./docs/guides/updating-state.md#with-immer)
## Middleware
You can functionally compose your store any way you like.
```jsx
// Log every time state is changed
const log = (config) => (set, get, api) =>
config(
(...args) => {
console.log(' applying', args)
set(...args)
console.log(' new state', get())
},
get,
api,
)
const useBeeStore = create(
log((set) => ({
bees: false,
setBees: (input) => set({ bees: input }),
})),
)
```
## Persist middleware
You can persist your store's data using any kind of storage.