gpt4 book ai didi

javascript - useState 和 splice react

转载 作者:行者123 更新时间:2023-11-28 14:14:34 26 4
gpt4 key购买 nike

我在react中的useState有一个大问题..
我只想使用切片从数组中删除一个对象,并使用钩子(Hook) setState 这个数组。
但它不起作用我不知道为什么..

看:

  const [ img, setImg ] = useState(allImages);

const removeImageAtIndex = (index) => {
img.splice(index, 1); // when i console.log i can see that the object has been removed
setImg(img); // nothing changes
/* FOR TEST
setImg([]); // if I remove all img, it's working
*/
/* I already tried this:
let temp = img;
img.splice(index, 1);
setImg(temp);
*/
/* SOLUTION
setImg([...img]);
*/
};

return (
<div>
{ variants.map((variant, index) => {
return <img key={index } onClick={ () => removeImageAtIndex(index)} src={img.src} />
})}
</div>

谢谢!

最佳答案

你直接改变状态,这就是它不起作用的原因。使用不可变数组方法与 setState 的函数形式一起从数组中删除项目,例如使用 filter:

setImg(currentImg => currentImg.filter((img, i) => i !== index));

关于javascript - useState 和 splice react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58094367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com