Redux - 将动作包装在 mapDispatchToProps 中的另一个动作中
Redux - Wrap actions inside another action in mapDispatchToProps
我有几个动作,需要与另一个动作一起使用,
更具体地说,我有处理 doument 的操作和一个保存它的操作,我不想重复调用保存文档,所以我尝试在 mapDispatchToProps
和 thunk
上创建自己的包装器。
我需要传递给方法的每个动作执行到 thunk
个动作 -
来自
function changeAction() {
return: {
type: types.CHANGE
}
}
到
function change() {
return(dispatch, getState) => {
dispatch(changeAction())
saveDocument(getState());
}
}
我尝试创建方法将动作映射到 thunk
export function mapUpdatePresentationsToProps(actions) {
const mappedActions = {};
Object.keys(actions).map(action => {
mappedActions[action] = function() {
return (dispatch, getState) => {
dispatch(action)
dispatch(updatePresentation(getState()))
}
}
})
return mappedActions;
}
而且我总是得到一个错误 'Actions must be plain objects. Use custom middleware for async actions.' 我是不是做错了什么?我不知道如何调试它们。将不胜感激。
我猜你需要更改:
dispatch(action)
类似于:
dispatch(actions[action]())
现在您似乎尝试发送一个字符串
我有几个动作,需要与另一个动作一起使用,
更具体地说,我有处理 doument 的操作和一个保存它的操作,我不想重复调用保存文档,所以我尝试在 mapDispatchToProps
和 thunk
上创建自己的包装器。
我需要传递给方法的每个动作执行到 thunk
个动作 -
来自
function changeAction() {
return: {
type: types.CHANGE
}
}
到
function change() {
return(dispatch, getState) => {
dispatch(changeAction())
saveDocument(getState());
}
}
我尝试创建方法将动作映射到 thunk
export function mapUpdatePresentationsToProps(actions) {
const mappedActions = {};
Object.keys(actions).map(action => {
mappedActions[action] = function() {
return (dispatch, getState) => {
dispatch(action)
dispatch(updatePresentation(getState()))
}
}
})
return mappedActions;
}
而且我总是得到一个错误 'Actions must be plain objects. Use custom middleware for async actions.' 我是不是做错了什么?我不知道如何调试它们。将不胜感激。
我猜你需要更改:
dispatch(action)
类似于:
dispatch(actions[action]())
现在您似乎尝试发送一个字符串