首页 > 解决方案 > 从另一个动作调用动作

问题描述

我有一个子商店

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

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

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

我想创建另一个动作,reset或者resetAll在内部将上述 3 个动作称为:

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

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

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

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

标签: javascriptreactjsreduxeasy-peasy

解决方案


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

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

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

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

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

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


推荐阅读