reactjs - 在 React.js 中选择带有编辑的列表
问题描述
当新用户注册时,我的表单中有一个选择列表,选择列表包含部门。
当用户单击编辑按钮时,选择列表会自动选择在注册时选择的部门。编辑表单还有其他字段会自动填写在文本框中,但选择列表不会自动选择该部门。
这是我尝试过的代码,但这不起作用,唯一的问题是自动选择列表项。
<div className="form-group">
<label>Department Name </label>
<select className="form-control" name="empDep" id="empDep" value={this.props.emp_dep }>
{this.state.depsDropDown.map(dep =>
<option key={dep.DepartmentID} value={dep.DepartmentID}>{dep.DepartmentName}</option>
)}
</select>
</div>
解决方案
options
标签value
应该与select
标签相同value
。在您的情况下,您将部门名称传递给select
标记值,将 id 传递给option
标记value
。
如果您将option
标签更改value
为部门名称,那么它应该可以工作,请参阅代码,
<div className="form-group">
<label>Department Name </label>
<select className="form-control" name="empDep" id="empDep" value={this.props.emp_dep }>
{this.state.depsDropDown.map(dep =>
<option key={dep.DepartmentID} value={dep.DepartmentName}>{dep.DepartmentName}</option>
)}
</select>
</div>
注意:这只是一种解决方法,最佳做法是将部门 ID 保存在数据库中。
getEmpId = (name) => {
const { depsDropDown } = this.state;
let id = "";
for(let i = 0; i< depsDropDown.length; i++) {
let val = depsDropDown[i]
if(val.DepartmentName === name){
id = val.DepartmentID
}
}
return id;
}
将选择标记更新为
<select className="form-control" name="empDep" id="empDep" value={this.getEmpId(this.props.emp_dep)}>
和选项标记为,
<option key={dep.DepartmentID} value={dep.DepartmentID}>{dep.DepartmentName}</option>
推荐阅读
- java - 将大型资源文件夹包含到 java 项目中的最佳实践
- php - Yii 1.1:如何设置自定义状态码?
- dart - 使用 Navigator.popUntil 和没有固定名称的路由
- entity-framework - API 查询失败,状态码为 BadRequest:
- swift - 用户在线状态不会自动更新
- python - 在数据框中转换日期,如“Jul 3 215”
- javascript - 为什么这个 JS 倒计时不起作用?
- javascript - 将值从 html 表传递到另一个 html/js
- c# - 部分反序列化 JSON 以仅获取所需属性
- kubernetes - kubectl apply 命令不起作用,给出连接被拒绝错误