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

React如何实现三级子组件向顶层父组件回传props并调用父方法

React三级嵌套组件深层数据回传顶层实现方案

核心实现逻辑

React中没有子组件直接向上层组件传递数据的原生语法,统一通过回调函数逐层透传的方式实现:

  • 顶层组件先定义好接收深层数据的处理函数,将函数作为props传给下一级子组件
  • 中间层级的子组件不需要处理逻辑,直接将收到的回调函数透传给自己的子组件
  • 最底层组件在需要回传数据的时机,调用收到的回调函数,将要传递的数据作为参数传入即可

完整可运行示例代码

import React from 'react';

// 顶层父组件
class LevelOne extends React.Component{
    constructor(props){
        super(props);
        this.state = {
            // 用来存储从Level3回传的数据
            levelThreeData: null
        }
    }

    // 定义接收Level3数据的处理函数
    handleLevelThreeData = (dataFromLevelThree) => {
        // 这里可以拿到Level3传上来的数据,做打印、存state等操作
        console.log('从Level3拿到的数据:', dataFromLevelThree);
        this.setState({
            levelThreeData: dataFromLevelThree
        })
    }

    render(){
       return(
           {/* 将处理函数作为props传给Level2 */}
           <LevelTwo sendDataToTop={this.handleLevelThreeData}/>
       )
    }
}

// 中间层组件
class LevelTwo extends React.Component{
    render(){
        return(
            {/* 直接透传从Level1拿到的回调函数给Level3 */}
            <LevelThree sendDataToTop={this.props.sendDataToTop}/>
       )
    }
}

// 最底层组件
class LevelThree extends React.Component{
    // 示例:点击h1的时候触发回传
    handleClick = () => {
        // 调用从上层传下来的回调函数,传入要回传的参数
        this.props.sendDataToTop({
            content: '这是Level3要传给顶层的数据',
            time: new Date().getTime()
        })
    }

    render(){
       return(
          <h1 onClick={this.handleClick}>LEVEL3,点击我回传数据</h1>
       )
    }
}

export default LevelOne;

补充说明

如果嵌套层级超过3层,逐层透传回调会比较繁琐,可以用React Context API或者Redux、Mobx这类状态管理工具简化流程,三层嵌套场景下直接透传回调是最轻量化的实现方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 21:21:04