【发布时间】:2021-02-11 19:36:22
【问题描述】:
我有这段代码想要使用
const traits = [{title:"hello", effect:"world"},{title:"foo", effect:"bar"}];
const [ traitsArray, settraitsArray ] = useState([]);
呈现为 Checkbox 元素
{traits.map((items)=>{
return <FormControlLabel
label={items.title}
key={items.title}
control={<Checkbox data-value={items.title} checked={false} onChange={ e => {
if(traitsArray.includes(e.target.getAttribute('data-value'))){
settraitsArray(prevState => prevState.filter(items => items !== e.target.getAttribute('data-value')))
}
else{
settraitsArray(prevState => prevState.concat(items))
}
} }/>}/>})}
在选中的项目上,我想检查traitsArray中是否存在任何类似的值,如果true,则从数组中删除元素,如果false,将元素添加到数组中。
但每次我检查该项目时,它都会继续连接数组。是我遗漏了什么,还是我编码错误?
【问题讨论】:
标签: javascript reactjs