我正在尝试使用Jquery填充下拉列表的选项列表。但是,下面的代码不会按预期填充选项。
class MyClass extends React.Component {
render() {
return (
//blah blah
<select id="pm-list" className="form-control" defaultValue={this.state.selectedApprover} onChange={(event) => this.state.selectedApprover = event.target.options[event.target.selectedIndex].value}>
{(() => {
for (var i = 0; i < this.state.approvers.length; i++) {
$('#pm-list').append('<option value=' + this.state.approvers[i] + '>' + this.state.approvers[i] + '</option>');
}
})()}
</select>
)};
}
可能我在错误的地方使用过它?
更新
我可以在将Jquery片段放入componentDidMount
之后解决它。
componentDidMount() {
//blah blah
for (var i = 0; i < this.state.approvers.length; i++) {
$('#pm-list').append('<option value=' + this.state.approvers[i].NtId + '>' + this.state.approvers[i].FullName + '</option>');
}
};
但这背后的理由是什么呢?
答案 0 :(得分:0)
onChange
功能使用this.setState()
代替this.state.selectedApprover =
jquery
函数内编写componentDidMount
个内容。jquery
?您可以使用jsx
表达式来实现此功能。试试这个:
<select id="pm-list" className="form-control" defaultValue={this.state.selectedApprover} onChange={(event) => this.setState({selectedApprover: event.target.value})>
{() => {
return this.state.approvers.map((approver) => {
return (
<option value="{approver}">{approver}</option>
)
})
}
</select>