动作必须是普通对象。使用自定义中间件进行异步操作,但我使用的是redux-thunk

时间:2017-02-06 22:03:22

标签: reactjs redux redux-thunk

正如标题中所述,我在尝试调用返回(dispatch)=>的操作时收到错误“操作必须是普通对象...” {...}

这是整个项目:https://github.com/bmuk/youtube-dj

这是我创建商店的地方:https://github.com/bmuk/youtube-dj/blob/master/src/index.js

以下是我的行动:https://github.com/bmuk/youtube-dj/blob/master/src/actions.js

这是违规容器:https://github.com/bmuk/youtube-dj/blob/master/src/containers/NextVideo.js

我意识到还有很多其他问题,但是我无法从他们那里收集任何可操作的信息。我有redux-thunk,我在不同的项目中使用它(它只是不使用这样的容器,我将动作作为一个整体传递给子组件)并且它工作得很好,即使使用redux devtools,这是大多数人遇到此错误消息的问题。

1 个答案:

答案 0 :(得分:1)

我不确定这是否是您问题的根源,但是当您使用reactDispatchToProps和react-redux的连接方法时,您也不应该有任何理由使用bindActionCreators。它应该可以正常工作:

const mapDispatchToProps = (dispatch) => {
  return {
    pushVideo: (video) => dispatch(pushVideo(video))
  };
};

如果这不能解决问题,我可以更深入地调查,但这将简化正在进行的工作并使其更容易深入挖掘。

进一步挖掘...... 你需要摆脱bindActionCreators调用它才能工作,但主要问题是react-inline-grid。如果你删除网格它的工作原理。网格正在创建自己的商店(它没有thunk中间件),然后当你在网格中时连接到它时,它会与你的商店发生冲突。