javascript - 从另一个动作调用动作
问题描述
我有一个子商店
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 = [];
}),
解决方案
只需创建一个不同的函数:
function setInState(state, p, value) {state[p] = value}
然后从您的所有操作中调用 setInState ...
如果您坚持使用没有单独功能的操作,它们是另一个对象的属性,而不是独立变量。所以你会从对象中获取它们。
所以也许 this.resetData() 可能会起作用。但我的第一个建议通常更强大......
此外,'this' 甚至在箭头函数中也不起作用;所以你可能需要改变其他的东西......
推荐阅读
- python - pygame 函数似乎运行了两次
- javascript - 如何使用快速路由器设置速率限制
- php - Laravel 中间件使用碳
- google-chrome - Chrome 扩展显示上下文菜单,左键单击而不弹出
- javascript - 使用 javascript 将数据提取到表中
- local-storage - 如何将多个类切换状态保存到本地存储?
- c - bno055 IMU 校准
- java - Lombok 字符串数组属性
- r - 为什么 R 中的函数没有在所有输入集上运行?我收到此错误:替换有 1 行,数据有 5
- typescript - 如何使用@babel/preset-typescript 编译 TypeScript 类?