jquery - Bootstrap/React - 使用数组填充选择选项
问题描述
我正在尝试使用 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>');
}
};
但是,这背后的基本原理是什么?
解决方案
我对改进代码的建议
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>
推荐阅读
- python - 如何将局部变量转换为全局变量?
- android-studio - 从 Android Jetpack 使用导航时出现“发现现有项目依赖项中的不一致”错误
- sqlite - 将base64图像字符串转换为二进制的正确方法?
- regex - 至少一个特定字符的正则表达式
- c# - 导出的文件返回为 JSON 而不是 Excel 文件
- r - 在 lapply 中使用 join 时如何停止复制我的数据框?
- r - 如何在R中预测多个时间序列
- html - 为什么音频、视频和 img 元素的 HTML 标签看起来如此不同?
- shopify - 我的数组中的一个项目和一个字符串具有相同的值,但是为什么 == 评估为 false?
- flutter - 使用 Riverpod & PopupMenuButton 怀疑无限循环