У меня есть контейнер, который является дочерним контейнером.Этот дочерний контейнер обрабатывает states
, а также получает props
от родителя.У меня есть два оператора выбора, которые onChange
устанавливает state
в дочернем контейнере.По какой-то причине setState()
вызывает повторную визуализацию контейнера.Странная часть в том, что render()
, а также мой код setState()
вызывается только один раз.(Я добавил отладчик для проверки).Пожалуйста, найдите мой код со списком выбора ниже:
<Select
native
name="evidenceNode"
value={nodeType}
onChange={this.handleChange('nodeType')}
className={classes.textField}
>
<option />
{NODE_TYPE.map(function (item, i) {
return <option key={i} value={item}>{item}</option>
})}
</Select>
<Select
native
name="modelType"
value={modelType}
onChange={this.handleChange('modelType')}
className={classes.textField}
>
<option />
{MODEL_TYPE.map(function (item, i) {
return <option key={i} value={item}>{item}</option>
})}
</Select>
Вот моя функция handleChange:
handleChange = name => event => {
this.setState({
[name]: event.target.value,
});
};
Я подозреваю, что это очень маленькое исправление, но я не знаю, где яЯ иду не так.
Вещи, которые я пробовал:
- Измените способ вызова дескриптора, измените его на функцию стрелки, и она не сработала
- Я удалил одну из инструкций Select ипопытался запустить снова, и это сработало.
- Я пытался удалить вызов
handleChange
из одного оператора Select, и он работал нормально.
Также я должен упомянуть: у меня естьcomponentWillReceiveProps
функция (не уверен, если это имеет значение)
componentWillReceiveProps(nextProps, nextContext) {
if(nextProps.selectedNode !== this.state.selectedNode){
this.setState({
selectedNode: nextProps.selectedNode
});
}
}