繁体   English   中英

如何从 function 组件中的数组中删除图像

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM