当我们想要触发更新时,必须要调用 set | setState
方法。该方法是基于现有整体状态的浅合并
例如下面这种写法,最后将得到状态 {salmon, tuna, setSalmon }
1const useStore = create((set) => ({2salmon: 1,3tuna: 2,4setSalmon: (newVal) => set(() => ({ salmon: newVal }))5}))
如果我们要单独针对某一个状态进行更改,我们可以从 state 中获取当前值,然后进行新值的运算并返回合并
1export const useStore = create()((set) => ({2count1: 1,3count2: 1,4inc_count1: () => set((state) => ({ count1: state.count1 + 1 })),5dec_count1: () => set((state) => ({ count1: state.count1 - 1 })),6inc_count2: () => set((state) => ({ count2: state.count2 + 1 })),7dec_count2: () => set((state) => ({ count2: state.count2 - 1 })),8}))
完整如下
10import Count1 from './count1'20import Count2 from './count2'3040export default function Counter() {50return (60<div className='flex items-center justify-center space-x-4'>70<Count1 />80<Count2 />90</div>10)11}