跳到主要内容

Set

更新与合并状态

zustand / zustand-vue 中的 state 都需要触发 set 函数实现更新 ,它将与存储中的现有状态进行浅合并。需要注意的是:关于嵌套状态

const useStore = create((set) => ({
salmon: 1,
tuna: 2,
setSalmon: (newVal) => set(() => ({ salmon:1 })), // 不会抹除掉 tuna,将得到 {salmon, tuna, setSalmon }
}))

删除及覆盖状态

set 函数有第二个参数,默认为 false。如果为 true,它将取代(覆盖)状态模型,而不是合并。小心不要抹掉你所依赖的部分,比如 actions

import omit from 'lodash-es/omit'

const useStore = create((set) => ({
salmon: 1,
tuna: 2,
deleteTuna: () => set((state) => omit(state, ['tuna']), true), // 将删除 state.tuna ,保留其它 state、actions
deleteEverything: () => set({}, true), // 将清除掉完整的 store,包括 state、actions
}))