javascript - React,使用该组件内的按钮删除组件

标签 javascript reactjs

我有一个动态渲染的组件,有自己的 key ,存储在对象数组中。 该组件有一个删除按钮,理想情况下可以从数组的键中删除该元素。 但我无法理解它。删除函数应该在容器中还是在组件中?我尝试了不同的方法,但似乎没有任何效果。 现在我有:

容器中的对象数组:

  const [weight, setWeight] = useState([{name: 34, value: "321iuiv51234"},{name: 38, value: "jkxdxb55s"}]);

以及动态渲染的组件,其中垃圾箱 img 应触发删除组件的函数。

import React from "react";
import "./Weight.css";
import trashbin from "../img/trash-bin.png";

const Weight = ({}) => {


  return (
    <div className="weight-box">
      <p>{weight} kg</p>
      <p></p>
      <img src={trashbin} alt="trash bin" className="trash-bin" />
    </div>
  );
};

export default Weight;

有什么想法吗?谢谢!

最佳答案

删除功能应该是容器的一部分,但触发事件应该来自Weight

类似于

import React from "react"; 
import "./Weight.css"; 
import trashbin from "../img/trash-bin.png"; 

const Weight = ({delete, name, value}) => { 
  return (
    <div className="weight-box">
      <p>{name} kg</p>
      <p></p>
      <button onClick={() => delete(name)}><img src={trashbin} alt="trash bin" className="trash-bin" /></button>
    </div>
  ); 
}; 
export default Weight;

function Container(props) {

  const [weight, setWeight] = useState([{
    name: 34,
    value: "321iuiv51234"
  }, {
    name: 38,
    value: "jkxdxb55s"
  }]);

  const removeByName = useCalback((nameToDelete) => {
    setWeight(currentWeights => currentWeights.filter(({
      name
    }) => name !== nameToDelete));
  }, []);


  return (
    weight.map(w => <Weight delete={removeByName} { ...w} />)
    );
  }

关于javascript - React,使用该组件内的按钮删除组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70493648/

相关文章:

javascript - React js 我应该如何处理在调用 componentDidMount() 之前使用的对象?

javascript - 如何在 React JS 中将 props.children 添加到带有 child ="xyz"属性的开始和结束标记内?

javascript - 如何从 HTML 和 Javascript 页面执行 Linux 命令?

javascript - 如何在Javascript中识别颜色?

javascript - JS/jQuery 适合 div 内的所有图像(无空格)

javascript - 更改 parent 背景颜色的 div 颜色

javascript - react-scripts 启动错误(找不到模块 '../scripts/start') - 我该如何解决这个问题?

javascript - chrome 扩展程序中的后台脚本究竟何时运行?

reactjs - React props比较: "_.isEqual" versus "==="

reactjs - @react-pdf/渲染器。如何生成PDF并下载