【发布时间】:2019-08-29 06:51:13
【问题描述】:
- 我有 4 个选择下拉菜单。
- 所选值不应出现在下拉列表的其余部分中
我的state 看起来像这样
this.state = {
selectedDropdownArray: {},
dropdownArray: ['select','1','2','3','4','5']
}
下面是我的选择下拉组件
<SelectDropdown
options={this.state.dropdownArray}
value={this.getValue()}
onChange={this.handleChange.bind(this)}
在 handleChange 函数上,我只是先将值推送到其余工作所需的对象,然后我正在修改 dropdownArray 。下拉列表的数组列表应根据选择进行过滤。
下面是我的handleChange 函数,它过滤了下拉值。
handleChange(name, value){
switch(name){
case '1' :
this.state.selectedDropdownArray["0"] = value === "select" ? null : value
break;
case '2' :
this.state.selectedDropdownArray["1"] = value === "select" ? null : value
break;
case '3'
...
...
}
let filter = Object.values(this.state.selectedDropdownArray);
let difference = this.state.dropdownArray.filter(x => !filter.includes(x));
}
如果选择了值为1 的第一个下拉列表,则difference 现在具有过滤数组[2,3,4,5],我可以将setState 转换为dropdownArray。
但第一个下拉列表没有1 显示在此选择中,因为该数组已被过滤。
解决此问题的有效方法是为每 4 个选择下拉菜单进行唯一选择。
【问题讨论】:
标签: javascript reactjs select drop-down-menu