【发布时间】:2021-12-06 22:10:27
【问题描述】:
我似乎正确地传递了一切。
- 当我尝试从数组中删除项目时,它会删除除我要删除的项目之外的所有其他项目。也祭坛的项目。例如,如果项目是字符串 ss。
- 如果我从数组中删除最后一个 2 个字符的项目,例如 77。它会将数组中每个 2 个字符长的项目更改为 7。并删除所有其他项目
- 如果我从数组中删除第一项,它会清除整个数组
我需要做什么
从数组中删除与 var itemIndex 匹配的项目
母公司
const Pagethree = () => {
const[items,setItem] = useState([]);
return(
<ul>
{
items.map((items, i) =>
<ListItem index={i} item={items} setItem={setItem}/>)
}
</ul>
)
儿童补偿
import React, {useState} from "react";
const ListItem = (props) =>{
const {item, setItem, index} = props;
const removeItem = e =>{
var array = [...item];
var indexItem = index;
if (indexItem !== -1){
array.splice(indexItem, 1);
setItem(array);
}
console.log(array);
}
return(
<div>
<ul>
{
<div class="flex">
{item}
<button onClick={removeItem}>delete</button>
</div>
}
</ul>
</div>
)
};
export default ListItem;
【问题讨论】:
-
您有要过滤的 id 吗?例如 array.filter(item => item.id !== id) 并且你在 onClick={()=> removeItem(id)} 中传递 id 并通过 removeItem 的道具传递
-
理想情况下,您的父组件应该管理所有项目的状态,并且只为道具中的按钮传递一个处理函数,然后使用该已删除项目的 id 更新状态。
标签: javascript arrays reactjs slice