【发布时间】:2021-12-08 04:48:24
【问题描述】:
我有一个两个选择列表,我可以从中选择值
列出一个=“A”、“B”
列出两个 = “C”、“D”、“E”、“F”
我有一个反应状态
const [filterTags, setFilterTags] = useState({ one: [], two: [] });
我可以从updateValue(val) 中的任何列表中一次传递一个 val
我需要以这样的方式更新filterTags,如果它的val来自列表one,即A或B,它应该像这样更新状态
{one:["A"]: two:[]}
const updateValue = (val) => {
if (val === 'A' || val === 'B') {
setFilterTags({ one: val });
} else {
setFilterTags({ ...filterTags, two: val });
}
};
如果我一一传递A C C D B A E C,它应该用唯一值更新数组,输出应该是
{one:["A"]: two:[]} //passing A
{one:["A"]: two:["C"]} //passing C
{one:["A"]: two:["C"]} // same since C is already there in two on passing C
{one:["A"]: two:["C","D"]} //passing D
{one:["A","B"]: two:["C","D"]} //passing B
{one:["A","B"]: two:["C","D"]} //same since A is already present in one on //passing A
{one:["A","B"]: two:["C","D","E"]} //passing E
{one:["A","B"]: two:["C","D","E"]}// final output on passing C
它应该使用唯一值更新相应的元素 现在上面的代码只能更新一个值
【问题讨论】:
标签: javascript arrays reactjs object react-hooks