Redux - 在mapDispatchToProps中的另一个动作中包裹动作

时间:2017-02-15 12:43:10

标签: reactjs asynchronous redux redux-thunk

我有几个动作,需要与另一个动作一起使用, 更具体我有动作来处理doument和一个动作来保存它,我不会重复调用保存文档,所以我试图在mapDispatchToPropsthunk上创建自己的包装器。

我需要将每个操作传递给执行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;
}

我总是得到一个错误'动作必须是普通的对象。使用自定义中间件进行异步操作。难道我做错了什么?我不知道如何调试它们。将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:1)

我想你需要改变:

dispatch(action)

类似于:

dispatch(actions[action]())

现在看来你试图发送一个字符串