You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React子组件点击删除按钮向父组件传递元素ID的实现求助

实现子组件删除按钮传递ID给父组件

要完成点击子组件删除按钮后把对应笔记ID传给父组件的功能,按以下步骤修改代码即可:

1. 父组件中定义删除处理函数

在Main组件里新增一个处理删除逻辑的函数,它接收笔记ID,通过filter过滤掉对应ID的笔记并更新状态:

const Main = () => {
    // ... 原有代码
    
    // 新增删除处理函数
    const handleDelete = (noteId) => {
        setNote(prevNotes => prevNotes.filter(note => note.id !== noteId));
    }

    // ... 原有代码
}

2. 父组件传递ID和回调给子组件

渲染Notes组件时,把当前笔记的ID和刚才定义的handleDelete函数作为props传入:

{ 
    mynote.map((obj)=>{
        return( 
            <div key={obj.id} onClick={() => handleClick(obj.id)} className={`notes ${isActive === obj.id ? 'active':'inactive'}`}>
                <Notes 
                    notetitle={obj.title} 
                    notedate={obj.date} 
                    noteId={obj.id}  // 传递当前笔记ID
                    onDelete={handleDelete}  // 传递删除回调函数
                />
            </div>    
        )
    })     
} 

3. 子组件接收props并绑定删除事件

修改Notes组件,新增接收noteId和onDelete两个props,然后给删除按钮的图片绑定点击事件,触发回调并传入当前笔记ID:

const Notes = ({notetitle, notedate, noteId, onDelete}) => {
   
    return (
        <div className="note">
            {/* ... 原有代码 */}
            <div className="div2">
                <div className="delimg">
                    <img 
                        src={del} 
                        alt="delete" 
                        onClick={() => onDelete(noteId)}  // 绑定删除点击事件
                    />
                </div>
            </div>
        </div>
    )
}

这样点击子组件里的删除按钮时,对应笔记的ID就会传递到父组件的handleDelete函数中,父组件会过滤掉该ID的笔记,完成删除操作。

另外注意:你父组件中的handleClick和setisNav函数目前未定义,需要补充实现或者移除对应的调用,避免运行报错。

内容的提问来源于stack exchange,提问作者Akash Kr. Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:55:11