Set
Update And Merge State
The state in zustand / zustand-vue needs to trigger the set function to implement the update, which will do a shallow merge with the existing state in the store. Note: About Nested State
const useStore = create((set) => ({
salmon: 1,
tuna: 2,
setSalmon: (newVal) => set(() => ({ salmon:1 })), // won't delete tuna, will get {salmon, tuna, setSalmon }
}))
Delete And Overwrite State
The set function has a second parameter, which defaults to false. If true, it will replace (overwrite) the state model, not merge. Be careful not to wipe out parts you rely on, such as actions。
import omit from 'lodash-es/omit'
const useStore = create((set) => ({
salmon: 1,
tuna: 2,
deleteTuna: () => set((state) => omit(state, ['tuna']), true), // state.tuna will be deleted, other state, actions will be kept
deleteEverything: () => set({}, true), // Will clear the complete store, including state, actions
}))