this.props.dispatch()使用重构生命周期({})未定义

时间:2018-03-31 20:28:12

标签: reactjs redux decorator redux-form recompose

所以我试图使用Recompose将生命周期方法移动到HOC装饰器中。像这样......

export const fetchOptions= lifecycle({  
  componentDidMount() {
     this.props.dispatch(change('mainForm', 'orderHeader.proxies', this.props.currentSalesRepId));
  },

  componentDidUpdate(prevProps) {
    if (this.props.total != prevProps.total){
      this.props.dispatch(change('mainForm', 'totalPurchase', this.props.total));
    }
  }
 });

然后我尝试将其添加到我的表单组件中,该组件呈现我的所有标记。像这样。

export default compose(
  connect(mapState, mapDispatch),
  fetchOptions,
)(MainReduxForm)

我一直收到一个错误,指出this.props.dispatch不是一个函数......有什么想法吗?我故意保留这个简短的内容以避免文字墙。如果您需要其他信息,请告诉我们!

1 个答案:

答案 0 :(得分:3)

此处的问题是dispatch方法只会在您提供mapDispatchToProps功能或您的情况下自动添加到道具中。 mapDispatch

所以你有两个选择,从你的连接电话中删除mapDispatch

export default compose(
  connect(mapState),
  fetchOptions,
)(MainReduxForm)

或者如果您在mapDispatch内部正在做某事,只需将调度添加到您的返回对象

const mapDispatchToProps = (dispatch) => {
    return {
        dispatch,
        ...
        other dispatch functions here
        ...
        }
    }
}