【发布时间】:2021-05-17 11:27:09
【问题描述】:
我列出了所有图像以及每个图像侧面的删除按钮以删除该图像,但是当我单击任何删除按钮时,除了一个之外,所有图像都会被删除。当我在 arrayRemove() 函数中删除后 console.log() 新数组时,它会打印正确的数组。我正在使用反应框架。
{(imageURLs.length !== 0) && (
<div>
Images
{imageURLs.map((img, i) => (
<div key={img}>
{i + 1 + "."}
<img
src={img}
alt="Images Preview"
className="mt-3 mr-2"
width="75"
height="75"
style={{marginLeft: 15}}
/>
<IconButton aria-label="delete"
style={{marginLeft: 25}}
onClick={() => {arrayRemove(imageURLs, i)}}>
<DeleteIcon />
</IconButton>
</div>
))}
</div>
)
}
这是arrayRemove函数-
function arrayRemove(arr, i) {
if(arr.length === 1) {
alert("You need to keep atleast one image for your product!")
return;
}
else {
arr.splice(i, 1);
setImageURLs((oldArray) => [arr]);
console.log(imageURLs);
}
}
【问题讨论】:
-
不会是
setImageURLs(arr)吗?不过你不应该改变数组,在修改它之前用.slice()复制它。 -
setImageURLs(arr) 不会在删除图像时更新 UI。即使在使用 .slice() 复制后也存在同样的问题!
标签: javascript reactjs