this.props.dispatch() undefined с использованием жизненного цикла перекомпоновки ({})

Итак, я пытаюсь перенести свои методы жизненного цикла в декоратор HOC, используя Recompose. Что-то вроде этого...

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 не является функцией... Есть мысли? Я намеренно сохранил это краткое изложение, чтобы избежать текстовой стены. Если вам нужна дополнительная информация, просто дайте мне знать!


person Shawn Matthews    schedule 31.03.2018    source источник
comment
Как выглядит mapDispatch? Вы вводите dispatch в реквизит?   -  person Oblosys    schedule 31.03.2018


Ответы (1)


Проблема здесь в том, что метод dispatch будет автоматически добавлен в ваши реквизиты только в том случае, если вы не предоставите функцию mapDispatchToProps или в вашем случае. mapDispatch

Таким образом, у вас есть два варианта: удалить mapDispatch из вашего соединения.

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

или если вы делаете что-то внутри своего mapDispatch, просто добавьте отправку к вашему возвращаемому объекту

const mapDispatchToProps = (dispatch) => {
    return {
        dispatch,
        ...
        other dispatch functions here
        ...
        }
    }
}
person Victor Ribeiro da Silva Eloy    schedule 31.03.2018
comment
Потрясающий! добавление отправки в mapDispatch решило проблему! Не знаю, почему я не подумал об этом! - person Shawn Matthews; 01.04.2018