将mapDispatchAsProps定义为简单的actionCreators对象不会将prop传递给组件

时间:2019-12-23 22:26:25

标签: javascript reactjs redux react-redux

通过阅读redux docs,特别是在react-redux上,使用简单的actionCreators对象将动作创建者绑定到调度函数上,将其作为 2nd < / strong> redux的connect的参数。

但是,如果我只是传递该对象或手动绑定动作创建者,则this.props为空(计数除外)。我没有incrementdecrementresetdispatch的道具。在箭头函数中手动调用dispatch使这些函数出现在道具中。

export const increment = () => ({ type: "INCREMENT" });

const mapDispatchToProps = {
  increment
};

export default connect(
  mapStateToProps,
  // WORKS: ******************** (manually calling action creator and dispatching new action)
  dispatch => ({
     increment: () => dispatch(increment())
  })
  // DOES NOT WORK: ************ (passing as simple 'actionCreators' object)
  // mapDispatchToProps,
  // DOES NOT WORK EITHER: ***** (manually binding action creators to dispatch)
  // dispatch => bindActionCreators(mapDispatchToProps, dispatch)
)(Counter);

我已经简化了上面的代码,但是代码沙箱是here

1 个答案:

答案 0 :(得分:1)

感谢Emile Bergeron的评论。

我有一个循环依赖项。我的index.js正在从Counter.js导入组件。 Counter.js中的组件正在从index.js导入动作创建者。一旦将动作重构到一个单独的文件中,它就起作用了。