【问题标题】:Calling action from another action从另一个动作调用动作
【发布时间】:2021-03-03 14:52:04
【问题描述】:

我有一个子商店

info: {}, 
data: {},
items: [],

我创建了 3 个操作来重置上面显示的各个属性:

resetInfo:action((state, payload) => {
    state.info = {};
  }),
resetData: action((state, payload) => {
    state.data = {};
  }),
resetItems:action((state, payload) => {
    state.items = [];
  }),

我想创建另一个动作,比如说 resetresetAll,它在内部将上述 3 个动作称为:

reset:action((state, payload) => {
    resetInfo();
    resetData();
    resetItems();
}),

但由于找不到这些方法,我遇到了错误。那么有没有办法可以在重置操作中调用 3 个操作?

我也知道,我可以按如下所示编写我的重置,但我很喜欢上述方法的解决方案

reset:action((state, payload) => {
    state.info = {};
    state.data = {};
    state.items = [];
}),

【问题讨论】:

    标签: javascript reactjs redux easy-peasy


    【解决方案1】:

    只需创建一个不同的函数:

    function setInState(state, p, value) {state[p] = value}
    

    然后从您的所有操作中调用 setInState...

    如果您坚持使用没有单独功能的操作,它们是另一个对象的属性,而不是独立变量。所以你会从对象中获取它们。

    所以也许 this.resetData() 可能会起作用。但是我的第一个建议通常更可靠...

    另外,'this' 甚至不能在箭头函数中使用;所以你可能需要改变其他的东西......

    【讨论】:

      猜你喜欢
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 2013-09-15
      • 2022-10-18
      • 1970-01-01
      相关资源
      最近更新 更多