Ответ выше от Лоры нарушает фильтрацию, когда вы пишете пользовательскую функцию filterOption (Если вы не хотите, чтобы ваш Select был фильтруемым, тогда, вероятно, все в порядке).
Более простым решением было бывместо этого просто примените простой фильтр к options
, через который вы проходите, ко второму Select.
const options = [
{ label: "foo", value: 1 },
{ label: "bar", value: 2 },
{ label: "bin", value: 3 }
];
class App extends Component {
constructor(props) {
super(props);
this.state = {
value1: false,
value2: false
};
}
onChange = option => {
if (this.state.value2.value === option.value) {
this.setState({
value1: option,
value2: false
});
} else {
this.setState({ value1: option });
}
};
onChange2 = option => {
this.setState({ value2: option });
};
render() {
return (
<div className="App">
<Select
onChange={this.onChange}
options={options}
value={this.state.value1}
/>
<Select
onChange={this.onChange2}
options={options.filter(
option => option.value !== this.state.value1.value
)}
value={this.state.value2}
/>
</div>
);
}
}
Рабочий пример