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

  • 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;
    }
    
    

    运行结果:

    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值