From ff168d77c0051b97098745b00a43b5aef22bf0c0 Mon Sep 17 00:00:00 2001 From: "dbritto.dev" Date: Fri, 23 Dec 2022 13:29:29 -0500 Subject: [PATCH 1/6] Update how to reset state doc --- docs/guides/how-to-reset-state.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/guides/how-to-reset-state.md b/docs/guides/how-to-reset-state.md index 0359e96872..d426ee2ddc 100644 --- a/docs/guides/how-to-reset-state.md +++ b/docs/guides/how-to-reset-state.md @@ -44,20 +44,20 @@ const useSlice = create((set, get) => ({ })) ``` -Resetting multiple stores at once instead of individual stores +Resetting multiple stores at once ```ts -import _create, { StateCreator, StoreApi, UseBoundStore } from 'zustand' +import _create, { StoreMutatorIdentifier, StateCreator } from 'zustand' const resetters: (() => void)[] = [] -export const create = ( - createState: StateCreator | StoreApi +export const create = < + TState, + Mos extends [StoreMutatorIdentifier, unknown][] = [] +>( + createState: StateCreator ): UseBoundStore> => { - // We need to use createState as never to support StateCreator and - // StoreApi at the same time. - // We also need to re-type slice to UseBoundStore> - const slice: UseBoundStore> = _create(createState as never) + const slice = _create(createState) const initialState = slice.getState() resetters.push(() => { @@ -78,3 +78,4 @@ export const resetAllSlices = () => { - Basic: https://codesandbox.io/s/zustand-how-to-reset-state-basic-demo-rrqyon - Advanced: https://codesandbox.io/s/zustand-how-to-reset-state-advanced-demo-gtu0qe +- Immer: https://codesandbox.io/s/how-to-reset-state-advance-immer-demo-nyet3f \ No newline at end of file From 59ba6e0f649a77d7f00aef75136166f8a344d9ca Mon Sep 17 00:00:00 2001 From: "dbritto.dev" Date: Fri, 23 Dec 2022 13:32:00 -0500 Subject: [PATCH 2/6] Minor fixes --- docs/guides/how-to-reset-state.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/how-to-reset-state.md b/docs/guides/how-to-reset-state.md index d426ee2ddc..d2e9e70969 100644 --- a/docs/guides/how-to-reset-state.md +++ b/docs/guides/how-to-reset-state.md @@ -78,4 +78,4 @@ export const resetAllSlices = () => { - Basic: https://codesandbox.io/s/zustand-how-to-reset-state-basic-demo-rrqyon - Advanced: https://codesandbox.io/s/zustand-how-to-reset-state-advanced-demo-gtu0qe -- Immer: https://codesandbox.io/s/how-to-reset-state-advance-immer-demo-nyet3f \ No newline at end of file +- Immer: https://codesandbox.io/s/how-to-reset-state-advance-immer-demo-nyet3f From 172828db60f60d38a8c2c8e0446ccc76eae0ad13 Mon Sep 17 00:00:00 2001 From: "dbritto.dev" Date: Fri, 23 Dec 2022 19:51:32 -0500 Subject: [PATCH 3/6] Minor changes --- docs/guides/how-to-reset-state.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/docs/guides/how-to-reset-state.md b/docs/guides/how-to-reset-state.md index d2e9e70969..d83b1abb2f 100644 --- a/docs/guides/how-to-reset-state.md +++ b/docs/guides/how-to-reset-state.md @@ -51,13 +51,10 @@ import _create, { StoreMutatorIdentifier, StateCreator } from 'zustand' const resetters: (() => void)[] = [] -export const create = < - TState, - Mos extends [StoreMutatorIdentifier, unknown][] = [] ->( - createState: StateCreator -): UseBoundStore> => { - const slice = _create(createState) +const create = ( + createState: StateCreator +) => { + const slice = _create(createState) const initialState = slice.getState() resetters.push(() => { From 6157cce32663d5903d03d10d2d318550ec3f99cb Mon Sep 17 00:00:00 2001 From: "dbritto.dev" Date: Sun, 25 Dec 2022 12:57:20 -0500 Subject: [PATCH 4/6] Minor changes --- docs/guides/how-to-reset-state.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/docs/guides/how-to-reset-state.md b/docs/guides/how-to-reset-state.md index d83b1abb2f..0833c9beac 100644 --- a/docs/guides/how-to-reset-state.md +++ b/docs/guides/how-to-reset-state.md @@ -47,22 +47,19 @@ const useSlice = create((set, get) => ({ Resetting multiple stores at once ```ts -import _create, { StoreMutatorIdentifier, StateCreator } from 'zustand' +import _create, { StateCreator } from 'zustand' const resetters: (() => void)[] = [] -const create = ( - createState: StateCreator -) => { - const slice = _create(createState) - const initialState = slice.getState() - +export const create = ((f: StateCreator | undefined) => { + if (f === undefined) return create + const store = _create(f) + const initialState = store.getState() resetters.push(() => { - slice.setState(initialState, true) + store.setState(initialState, true) }) - - return slice -} + return store +}) as typeof _create export const resetAllSlices = () => { for (const resetter of resetters) { From ea7ff44f02c2f9171ad091503a05e2849bdf41a5 Mon Sep 17 00:00:00 2001 From: "dbritto.dev" Date: Sun, 25 Dec 2022 12:59:52 -0500 Subject: [PATCH 5/6] Minor changes --- docs/guides/how-to-reset-state.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/how-to-reset-state.md b/docs/guides/how-to-reset-state.md index 0833c9beac..edcc869ba0 100644 --- a/docs/guides/how-to-reset-state.md +++ b/docs/guides/how-to-reset-state.md @@ -61,7 +61,7 @@ export const create = ((f: StateCreator | undefined) => { return store }) as typeof _create -export const resetAllSlices = () => { +export const resetAllStores = () => { for (const resetter of resetters) { resetter() } From 481606719481561beef477a2f56c31876468d4cc Mon Sep 17 00:00:00 2001 From: "dbritto.dev" Date: Mon, 26 Dec 2022 09:44:25 -0500 Subject: [PATCH 6/6] Minor changes --- docs/guides/how-to-reset-state.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/how-to-reset-state.md b/docs/guides/how-to-reset-state.md index edcc869ba0..b7257ed9d9 100644 --- a/docs/guides/how-to-reset-state.md +++ b/docs/guides/how-to-reset-state.md @@ -27,7 +27,7 @@ const initialState: State = { } // create store -const useSlice = create((set, get) => ({ +const useSlice = create()((set, get) => ({ ...initialState, addSalmon: (qty: number) => {