React向组件内部动态传入带内容的结构--props

文章讲述了在React中如何通过`children`和`render`属性实现组件间的父子通信,展示了从Parent组件通过A组件传递数据给B组件的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • children props:通过组件标签体传入结构

    <A>
    	<B>xxx</B>
    </A>
    {this.props.children}
    
  • render props:通过组件标签属性传入结构,一般用render函数属性

    <A render={data=> <C data={data}></C>}></A>
    //A组件:
    {this.props.render(内部state数据)}
    //C组件:读取A组件传入的数据显示
    {this.props.data}
    
    

    案例

    import React, { Component } from 'react'
    import './index.css'
    
    export default class Parent extends Component {
        render() {
            return (
                <div className='parent'>
                    <h4>Parent组件</h4>
                    <A render={(name) => <B name={name}></B> }></A>
                </div>
            )
        }
    }
    
    class A extends Component {
        state = {name:'sun'}
        render() {
            return (
                <div className='A'>
                    <h4>A组件</h4>
                    {/* {this.props.children} */}
                    {this.props.render(this.state.name)}
                </div>
            )
        }
    }
    
    class B extends Component {
        render() {
            return (
                <div className='B'>
                    <h4>B组件</h4>
                    <div>B组件收到的name为:{this.props.name}</div>
                </div>
            )
        }
    }
    
    

    样式文件:

    .parent{
        width: 500px;
        background-color: greenyellow;
        padding: 20px;
    }
    
    .A{
        width: 90%;
        background-color: skyblue;
        padding: 20px;
    }
    
    .B{
        width: 90%;
        background-color: slateblue;
        padding: 20px;
    }
    
    

    运行结果:

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值