【发布时间】:2020-09-03 09:39:54
【问题描述】:
我有一个这样定义的选择组件:
this.state.list = [{label: "test1", value:1}, {label:"test2", value:2}, {label:"test3", value:3}]
this.state.selected = [{label:"test2", value:2}]
let listMap = this.state.list
let list = this.state.list
{listMap.length !== 0 ? listMap.map((item: any, key: number) => (
<div>
<Select
id="list for data"
options={list}
onChange={value => selectList(value)}
placeholder="Select Your Option"
/>
<div/>
))
我希望在选择test2 之后,我希望其他两个下拉菜单显示test1 和test3。
到目前为止我做了什么:
let y = this.state.selected.map(itemY => { return itemY.value })
let x = list.filter(itemX => !yFilter.includes(itemX.value)) // [{value: 1, label:"test1"},{value: 3, label: "test3"}]
然后将options 属性替换为x。
过滤器正在工作,但是,
占位符未更新选定的值。
我想要达到的目标:
对于下一个下拉列表[1],只能选择那些未选择的:
【问题讨论】:
-
这显然是错误的。你不应该使用这样的状态
-
您能建议一种正确的方法吗? this.state.list 将在进行 api 调用后来自 redux 存储,所以我这样做是为了快速说明我面临的问题。
标签: javascript reactjs