Реакция окончательного изменения формы initialValues ​​после монтирования компонента - PullRequest
0 голосов
/ 19 марта 2019
Модал

A EditPlayerModal.js открыт из контейнера player.js. initialValues ​​ готовится из player.js и передается в EditPlayer.js.

initialValues = {name: 'abc', country: 'France',......} выглядит так. страна является компонентом раскрывающегося списка формы ответа.

EditPlayerModal.js

render () {

.....
.....

const changePlayerCountry = ([name], state, methods) => {
  methods.changeValue(state, name, () => this.state.selectedPlayer);
};


<Form
    initialValues={this.props.initialValues}
    mutators={{ ...arrayMutators, changePlayerCountry }}
    onSubmit={onSubmit}
    validate={validate}
    render={({
      pristine,
      values,
      handleSubmit,
      form,
    }) => (
      <form onSubmit={handleSubmit}>
         ........
         ........
         ........
         ........

        <PlayerDetailModal
            show={this.state.show}
            closeModal={this.state.closeModal}        
            countryDropdownChangeHandler={(e) => {
                this.setState({
                    selectedPlayer: e
                      }, () => {
                        form.mutators.changePlayerCountry('country')
                      })
                    }}
                  />

PlayerDetailModal

countryDropdownChangeHandler = (e) => {
    this.props.countryDropdownChangeHandler(e)
}

С PlayerDetailModal.js страна будет изменена и будет вызван countryDropdownChangeHandler реквизит.

Вопрос

  • Почему страна не изменяется в EditPlayerModal.js обработчик выпадающего списка страны?
  • Что я делаю не так?

Еще один подход, который я попробовал, - передать страну до родительского index.js и изменить initialValues ​​ объект страны. И используйте shouldComponentUpdate , проверьте prev и next initialValues ​​в EditPlayerModal.js и отредактируйте компонент. Этот подход тоже не сработал.

Реагируйте и реагируйте в окончательной форме новичка здесь!

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...