下面是正在工作的delete函数,它接受一个参数并使用参数中的索引删除元素。
Setitem是一个useState钩子,定义如下:当我们单击“添加”列表时,将其添加到项数组中。
const listofitem = () => {
setitems((e) => {
return [...e, list];
});
};这一功能正在发挥作用。
const deleteItems = (e) => {
setitems((e1)=> {
return e1.filter( (er, index)=> {
return index!=e;
});
});}
为什么这不起作用,剪接法很好用。
const deleteItems = (e) => {
items.splice(e-1, 1);
setitems((e1)=>{
return e1;
})
};下面是相同的代码沙箱,这个函数就是在这里工作的。但我想知道为什么另一个不起作用。
https://codesandbox.io/s/old-wood-cbnq86?file=/src/App.js:0-1169
发布于 2022-10-27 10:11:44
这就是我让它工作的方法,在您的示例中,您尝试直接改变状态,然后不真正设置状态。如果您想在setState上使用状态,则需要对您所称的e1进行变异。但是,您的代码框存在一些问题,有时会多次触发该函数。
setitems((e1) => {
e1.splice(e, 1);
return [...e1];
});编辑作者更新的问题,这已不再相关。在第一个deleteItems函数中,您永远不会使用e,我假设它是要删除的索引。
const deleteItems = (deleteIndex) => {
setitems((list)=> list.filter((_, index)=> index !== deleteIndex));
};https://stackoverflow.com/questions/74219893
复制相似问题