标签: reactjs
TL; DR:调用this.setState来更新数组,避免使用选定的
说明: 我正在构建一系列这样的选项(dd用于下拉菜单):
let ddUsers = (this.state.users.map(user => <option key={uuid.v4()} value={user.key}>{user.name}</option>))
然后是我的选择:
<select onChange={this.handleFilter}>{ddUsers}</select>
这很完美:它首先显示在第一个选项上,并且能够显示其他选项。
这是我的onChange函数:handleFilter
handleFilter = (event) => { let selectedUsers; console.log(event.target.value, this.state.DEFAULT_KEY) if (event.target.value === this.state.DEFAULT_KEY) { selectedUsers = [...this.state.users]; } else { selectedUsers = (this.state.users.filter(user => user.key === event.target.value)); } // this.setState({selected: selectedUsers}); <-- The problem comes from this line (looks like atleast) }
现在,最后一行带有注释,select的标签将正确更新为所选选项。但是,当我取消注释该行时,将调用此函数,this.state.selected已更新 BUT ,但选择在第一个选项上被阻止。
清楚吗?我想念什么?
事实上:只需在函数中调用setState即可避免进行正确的更改
答案 0 :(得分:1)
这是因为您将key中的option设置为动态值,该值每次都会更新。尝试将一个已知且唯一的知识用作key。如下代码
key
option
<option key={user.key} value={user.key}>
这可以确保您拥有唯一的密钥,并且可以预测。