Я думаю, что ваш инстинкт верен - вы должны «поднимать состояние».Вероятно, есть способ сделать это без, но это, вероятно, вызовет некоторые другие проблемы позже.
Предположительно, ваши два Select
компонента содержатся в каком-либо другом родительском компоненте?Вы можете использовать функцию onChange
для установки значения второго входа через setState()
, например:
onChangeSelectOne(value) {
this.setState({
directoryCodeName: value,
subDirectoryCodeName: null
})
}
Затем обратитесь к состоянию, в котором вы определяете два Select
s:
<SelectField
options={props.directories}
placeholder="Directory"
onChange={props.onDirectoriesChange}
value={state.directoryCodeName} // notice state!
isClearable={true}
/>
<SelectField
options={props.subDirectories}
placeholder="Sub Directory"
onChange={props.onSubDirectoryChange}
value={state.subDirectoryCodeName} // notice state!
isClearable={true}
/>
Последний шаг - заполнение состояния компонента в его конструкторе:
constructor(props) {
this.state = {
directoryCodeName: props.directoryCodeName,
subDirectoryCodeName: props.subDirectoryCodeName
}
}
Вызов setState()
вызовет повторную визуализацию вашего компонента, обновив раскрывающийся список до значения, которое выустановил.