You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在Zustand的一个Store中修改另一个Store的状态?请完成代码修改

在Zustand中跨Store修改状态

当然可以在一个Store内部修改另一个Store的状态,Zustand并没有限制这种跨Store操作,下面提供两种常见实现方式:

方法一:封装目标Store的修改方法后调用

先给forestStore添加一个专门用于增加动物数量的方法,再在bearStore的increasePopulation里调用这个方法:

const bearStore = create((set) => ({
  bears: 0,
  increasePopulation: () => {
    // 增加bears数量
    set((state) => ({ bears: state.bears + 1 }));
    // 调用forestStore的方法增加animals数量
    forestStore.getState().increaseAnimals();
  },
}))

const forestStore = create((set) => ({
  animals: 0,
  // 暴露修改animals的方法
  increaseAnimals: () => set((state) => ({ animals: state.animals + 1 })),
}))

方法二:直接调用目标Store的setState

Zustand创建的Store实例自带setState方法,你可以直接在bearStore中调用它修改forestStore的状态:

const bearStore = create((set) => ({
  bears: 0,
  increasePopulation: () => {
    set((state) => ({ bears: state.bears + 1 }));
    // 直接修改forestStore的animals状态
    forestStore.setState((state) => ({ animals: state.animals + 1 }));
  },
}))

const forestStore = create((set) => ({
  animals: 0,
}))

两种方式都能满足需求:方法一更贴合单一职责原则,把状态修改逻辑封装在对应Store内;方法二更简洁直接,适合简单场景。

内容的提问来源于stack exchange,提问作者user22191766

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 16:15:59