[英]how to delete an image from an array in function component
handleRemoveImgButn 应该删除第一个图像,但是当我单击 handleRemoveImgButn 时,图像不会从 DOM 中删除。 我也试过 setImgs((prevImgs) => prevImgs.filter(img => prevImgs.indexOf(img),== 0. 但它不起作用。下面是代码。提前感谢您的帮助。
import React, { useState, useEffect } from "react";
import "./styles.css";
import AddImgButn from "./AddImgButn";
import RemoveImgButn from "./RemoveImgButn";
export default function App() {
const [imgs, setImgs] = useState([]);
const handleAddImgClick = () => {
fetchId();
};
const handleRemoveImgClick = () => {
setImgs((prevImgs) => prevImgs.splice(1));
};
return (
<>
<h1>Catt</h1>
<div>
<AddImgButn onClick={handleAddImgClick} />
<RemoveImgButn onClick={handleRemoveImgClick} />
</div>
<div>
{imgs.map((img, i) => (
<img key={i} src={img} className="cat" alt="cat" />
))}
</div>
</>
);
}
发生这种情况是因为splice
更改了旧数组
然后useEffect
不会检测到它和新的之间的变化
您可以改用slice
const handleRemoveImgClick = () => {
setImgs((prevImgs) => prevImgs.slice(1));
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.