首页 文章

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

提问于
浏览
0

正如 Headers 中所述,当我尝试调用返回(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 回答

  • 1

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

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

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

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

相关问题