Я сделал много поисков, но не смог заставить это работать.Кажется довольно просто.Кстати, я использую Bootstrap-multiselect.
class MyProject extends React.Component {
constructor(props) {
super(props);
this.state = { searchForm: { status: ["VALUE2","VALUE4"], otherprops: "blah" }, otherStates: "blah"};
}
//blah blah
render() {
return (
<select id="example-multiple-selected" multiple="multiple" defaultValue={this.state.searchForm.status} onChange={(event) => this.state.searchForm.status = event.target.value}>
<option value="VALUE1">VALUE1</option>
<option value="VALUE2">VALUE2</option>
<option value="VALUE3">VALUE3</option>
<option value="VALUE4">VALUE4</option>
<option value="VALUE5">VALUE5</option>
<option value="VALUE6">VALUE6</option>
<option value="VALUE7">VALUE7</option>
<option value="VALUE8">VALUE8</option>
</select>
)
}}
ПРОБЛЕМА
Значения по умолчанию (VALUE2 и VALUE4) не выбираются;
Ничего не происходит, когда я изменяю выбранные опции
РЕДАКТИРОВАТЬ
Кажется, все говорят о том, что я неправильно устанавливаю состояние,с чем я абсолютно согласен.Это была глупая ошибка, которую я сделал.Однако фундаментальная проблема, с которой я сталкиваюсь, по-прежнему остается:
, как я уже упоминал, значения по умолчанию не заполняются;
Функция onStatusChanged не являетсясрабатывает на всех.Я поместил точку отладки в эту функцию, но точка отладки не была достигнута, когда я изменил выбранные параметры.
onStatusChanged = (e) => {let search = this.state.searchForm;search.status = e.target.selectedOptions;this.setState ({searchForm: search})}
<select id="example-multiple-selected" multiple="multiple" defaultValue={this.state.searchForm.status} onChange={this.onStatusChanged}>
РЕДАКТИРОВАТЬ 2
Последний код:
class MyProject extends React.Component {
constructor(props) {
super(props);
this.state = { searchForm: { status: ["VALUE2","VALUE4"], otherprops: "blah" }, otherStates: "blah"};
this.onStatusChanged = this.onStatusChanged.bind(this);
}
//blah blah
onStatusChanged = (e) => {
let search = this.state.searchForm;
search.status = e.target.selectedOptions;
this.setState({
searchForm: search
})
}
render() {
return (
<select id="example-multiple-selected" multiple="multiple" value={this.state.searchForm.status} onChange={this.onStatusChanged}>
<option value="VALUE1">VALUE1</option>
<option value="VALUE2">VALUE2</option>
<option value="VALUE3">VALUE3</option>
<option value="VALUE4">VALUE4</option>
<option value="VALUE5">VALUE5</option>
<option value="VALUE6">VALUE6</option>
<option value="VALUE7">VALUE7</option>
<option value="VALUE8">VALUE8</option>
</select>
)
}}
Чтобы повторить проблемы, с которыми я сталкиваюсь:
, как я уже говорил, значения по умолчанию не заполняются;
Функция onStatusChanged вообще не срабатывает.Я поместил точку отладки в эту функцию, но точка отладки не была достигнута, когда я изменил выбранные параметры.Похоже на onChange не было обнаружено.
Кстати, если это поможет, я использую плагин Bootstrap-multiselect .