Модал
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 и отредактируйте компонент. Этот подход тоже не сработал.
Реагируйте и реагируйте в окончательной форме новичка здесь!
Спасибо