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

React开发WhatsApp克隆:跨组件调用onClick隐藏头像卡片

解决方案

要实现子组件按钮触发父组件隐藏头像卡片的需求,核心是父组件向子组件传递回调函数,子组件通过调用这个回调来通知父组件修改状态。具体实现步骤如下:


1. 父组件(Top_bar)传递关闭回调给子组件

在Top_bar组件中,将隐藏卡片的逻辑(setdp(false))封装成回调函数,作为props传递给Show_dp组件:

修改Top_bar中Show_dp的调用代码:

<div id="dp_card" style={{display: dp? "flex": "none"}}>
    {/* 传递关闭回调,同时修正image传值错误:应该用prop.image而非profile_picture */}
    <Show_dp image={prop.image} onClose={() => setdp(false)} />
</div>

2. 子组件(Show_dp)接收并触发回调

在Show_dp组件中,接收父组件传来的onClose属性,给目标按钮绑定onClick事件,触发这个回调:

修改Show_dp组件代码:

function Show_dp(prop){
    return(
        <div id="box">
            <div id="dp">
                <img src={prop.image}></img>
            </div>
            <div id="buttons">
                {/* 绑定onClick事件,调用父组件的关闭回调 */}
                <div className="buttons_dp" onClick={prop.onClose}>
                    <FontAwesomeIcon className="ico" fontSize="1.5em" color="white"  icon={faMessage} />
                </div>
            </div>
        </div>
    )
}

export default Show_dp;

额外修正提示

你原代码中Top_bar组件给Show_dp传image={profile_picture}是错误的,应该使用prop.image(和左侧头像的图片源保持一致),否则头像无法正常加载,上面的代码已经同步修正了这个问题。

内容的提问来源于stack exchange,提问作者Abhrajit Saha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:56:04