Я хотел бы знать, как правильно создать несколько раскрывающихся меню (<select>
) с al oop, где я могу получить доступ к их выбранному значению с помощью кнопки . Я попытался воссоздать то, что у меня сейчас есть в моем коде, поэтому я надеюсь, что этого достаточно.
(Я помещаю элементы <select>
в массив, потому что я использую разные массивы для создания таблицы с строк в моем исходном коде.)
В настоящее время getValue()
, который пытается получить значение из 1-го раскрывающегося меню, печатает ''
, которое является начальным значением, даже когда я измените значение в меню. Я думаю, проблема в том, что размещение их в массиве заставляет их не обновлять собственное значение при изменении. Есть ли способ обойти эту проблему?
Этот код также приводит к тому, что this.state.value
устанавливается только в последнем измененном раскрывающемся меню. Я понимаю, почему это происходит, но не знаю, как это обойти.
interface Props extends PanelProps<Options> {}
export class TablePanel extends Component<Props,{value: string, staterows:JSX.Element[]}> {
constructor(props: Props) {
super(props);
this.handleUniqueSelect = this.handleUniqueSelect.bind(this)
this.state = {value: '', staterows:[] }
}
handleUniqueSelect(val:any){
this.setState({value: val.currentTarget.value})
}
populateRows(){
let rows:any = []
for(let index = 0; index < 10; index++) {
rows.push(<select value={this.state.value} onChange={this.handleUniqueSelect }>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
);
}
this.setState({staterows: rows})
}
getValue(){
if(this.state.staterows.length === 0)
this.populateRows()
console.log(this.state.staterows[0].props.value);
}
render(){
return (
<div>
{this.state.staterows}
<button type='button' onClick={e=>this.getValue()} >Button</button>
</div>
);
}
}
Я добавил пример в Sandbox . Я изменил console.log(this.state.staterows[0].props.value);
на console.log(this.state.staterows[0]);
, потому что были проблемы с поиском свойств неизвестного типа.