动作必须简单 objects。使用自定义中间件进行异步操作,但我使用的是 redux-thunk

Actions must be plain objects. Use custom middleware for async actions, but I am using redux-thunk

如标题所述,我在尝试调用 returns (dispatch) => { ... }

的操作时收到错误 "Actions must be plain objects..."

这是整个项目: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 并且我在另一个项目中以这种方式使用它(它只是不使用这样的容器,我将整个动作传递给 children 组件)并且它工作得很好,即使使用 redux devtools,这是大多数人 运行 遇到此错误消息的问题。

我不确定这是否是您问题的根源,但是当您将 mapDispatchToProps 与 react-redux 的连接方法一起使用时,您不应该有任何理由也使用 bindActionCreators .具有以下内容应该可以正常工作:

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

如果这不能解决问题,我可以进行更深入的调查,但这将简化正在发生的事情,并使其更容易深入研究。

进一步挖掘后... 您确实需要摆脱 bindActionCreators 调用才能使其工作,但主要问题是 react-inline-grid。如果您删除网格,它会起作用。网格正在创建自己的商店(没有 thunk 中间件),这将与您的商店发生冲突,因为您在网格内部时连接到它。