【发布时间】:2021-09-14 15:11:02
【问题描述】:
我有一个按钮列表,它们是多选的。当我选择要添加的按钮时,它将完美地添加到数组中并变为蓝色,当我单击已选择的按钮时,它应该从数组中删除并变为白色,但事实并非如此。下面显示了我到目前为止所做的尝试。
第一个数组(products)用于保存 API 数据。第二个是保存选择的产品。
const [products, setProducts] = useState([]);
const [selectedProducts, setselectedProducts] = useState<any>([]);
{products.length !== 0 ? (
products?.map(
(item: any, index) => (
<SButton
key={item.key}
label={item.value}
onClick={() => {
selectedProducts(item);
}}
isSelected={item.selected === "YES"}
/>
)
)
) : (
<p>No products</p>
)}
function selectedProducts(item:any){
if(selectedProducts.length !== 0){
selectedProducts.map((selecteditem:any)=>{
if(selecteditem.key == item.key ){
item.selected = "NO";
setselectedProducts(selectedProducts.filter((item: any )=> item.key !== selecteditem.key))
}else{
item.selected = "YES";
setselectedProducts([...selectedProducts, item]);
}
})
}else{
setselectedProducts([...selectedProducts, item]);
item.selected = "YES";
}
}
【问题讨论】:
-
使用 arr.splice() 方法从 selectedProducts 中删除产品,如果该项目已被选中...如果您需要进一步的帮助,请提供代码 sn-p 或 codepen 或任何在线 ide喜欢
标签: javascript arrays reactjs typescript react-hooks