React 多个复选框 取消选中按钮单击时的复选框

React multiple checkbox unchecking checkbox on button click

提问人:nafhaf 提问时间:10/5/2023 更新时间:10/5/2023 访问量:27

问:

我正在使用复选框来过滤反应中的数组 这是我的代码。

 const [selectedSubCats, setSelectedSubCats] = useState([]);
  const [subCategoryName,setSubCategoryName] = useState([])

{subCategories?.map((item, index) => (
              <div className="category-checkbox" key={index}>
                <CheckBoxButton
                  id={item.id}
                  name={item.name}
                  value={item.id}
                  onChange={(e)=>{
                    if (e.target.checked) {
                      setSelectedSubCats([...selectedSubCats, e.target.value]);
                      setSubCategoryName([...subCategoryName,e.target.name])
                    } else {
                      const newArr = selectedSubCats.filter((item) => item !== e.target.value);
                      setSelectedSubCats(newArr);
                     const namesArr = subCategoryName.filter((item) => item !== e.target.name)
                     setSubCategoryName(namesArr)
                    }

                  }}
                  text={item.name}
                />
              </div>
            ))}

我还将选定的子类别打印为数组

 {subCategoryName && (subCategoryName.map((name,index)=>(
                 <div key={index}>
                  <button style={{border:'none',padding:'10px 15px'}} type='submit'>{name}<AiOutlineClose/></button>
                 </div>
                 )))}

有没有办法通过传递 id 从这些按钮中取消选中选定的复选框?或调用函数。我不希望取消选中所有复选框,只能从选定的按钮中取消选中

JavaScript ReactJS 数组函数 复选框

评论


答:

0赞 Kamran 10/5/2023 #1

我假设您的名字是唯一的,按名称搜索子类别中的索引,更改子类别本身,这应该取消选中它。

为了避免不必要的重新渲染,您必须做一些额外的工作。