动作必须简单 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 中间件),这将与您的商店发生冲突,因为您在网格内部时连接到它。
如标题所述,我在尝试调用 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 中间件),这将与您的商店发生冲突,因为您在网格内部时连接到它。