Redux-формы Вызов альтернативной отправки из ComponentWillRecieveProps

версия для редуксов : 6.6.3

реагирующая версия: 15.5.0

Я хочу вызывать различные функции отправки из функции componentWillRecieveProps в моем компоненте реакции.

componentWillReceiveProps(nextProps) {

 if (nextProps.updateTierConfigState == "ValidationFulfilled" 
            && nextProps.updateMyConfigValidationClean) {
  console.log('CWRP calling submit()')
  //this.props.submit(); //THIS CALLS DEFAULT on FORM's onSubmit
  this.props.handleSubmit(this.updateSubmit().bind(this))

 }    
 else {
  this.props.handleSubmit(this.createSubmit().bind(this))
 }
}

updateSubmit(values) { 
  //do stuff
}

createSubmit(values) { 
  //do stuff
}

У меня есть примеры, как это: https://github.com/erikras/redux-form/issues/711

Но я не смог успешно вызвать handleSubmit. Он не вызывает переданную функцию.

Я отладил в handleSubmit, и он очень быстро возвращается без вызова указанной функции отправки.

2 ответа

Вы сразу вызываете функции, когда передаете их. Когда вы ссылаетесь на функции отправки, вам не нужно включать () после имени функции. this.updateSubmit().bind(this) должно быть this.updateSubmit, Вам также не нужно связывать здесь.

Изменить: this.props.handleSubmit(this.updateSubmit().bind(this))

Для того, чтобы: this.props.handleSubmit(this.updateSubmit)

Я обнаружил, что мне нужно сделать две вещи.

  1. Вызовите пользовательский метод отправки, используя эту строку: this.props.handleSubmit((values)=> this.submitUpdate(values))() Обратите внимание на добавленный "()" в конце.
  2. Переместите эту строку (и окружающее условие if) в метод componentDidUpdate(). Я использую реквизиты в методе отправки, чтобы определить состояние проверки компонента, и реквизиты из mapStateToProps не назначаются для этого. componentWillReceiveProps или же componentWillUpdate,

Вот мой новый автоматический вызов:

componentDidUpdate() {

 //moved this here so that this.props is updated from nextState
 if (this.props.updateMyConfigState == "ValidationFulfilled" 
            && this.props.updateMyConfigValidationClean) {

        this.props.handleSubmit((values) => this.submitUpdate(values))();            

 }
}

Я осознаю, что это выходит за рамки рекомендации для проверки в форме избыточности, и я признаю, что это может быть не лучшим способом справиться с проверкой. Мои нынешние рассуждения таковы:

  1. Это позволяет мне иметь несколько действий по проверке отправки (разделяет действия для создания и обновления действий пользователя), где у каждого есть свои ошибки и предупреждения. В частности, Ошибка: запретить действие и WarningsOnly: разрешить, но требует дополнительного одобрения пользователя.
  2. Визуально представьте ошибки / предупреждения в отдельном списке за пределами элементов графического интерфейса.
Другие вопросы по тегам