React使用children渲染子组件方法

在React中,虽然没有Vue的slot插槽功能,但可以通过`this.props.children`来渲染子组件。当需要向子组件传递参数时,可以利用React的`React.Children`和`React.cloneElement`API。`React.Children`用于遍历`props.children`,而`React.cloneElement`允许添加新的属性。直接使用`map`函数遍历`props.children`可能在遇到非数组类型时出错,因此推荐使用`React.Children`进行安全操作。
摘要由CSDN通过智能技术生成

    在Vue里, 渲染子组件可以使用slot插槽, 不仅能指定子组件渲染位置, 还能通过指定name属性来有选择地渲染, 但是在React里就没有这种组件了。

    当然, React也不是没有办法实现slot组件的功能, 通常就是用 this.props.children 这个属性:

class Parent extends Component {
  render() {
    return (<div>
      <div>
        这是正常的内容
      </div>
      { //这里渲染子组件
        this.props.children
      }
    </div>)
  }
}

    像这样, 只要在需要渲染子组件的位置加上 this.props.children 那么子组件的内容就回渲染在 '这是正常内容' 的下面, 否则, 父组件是不会渲染子组件的内容的。

    但是又有一个问题, 如果我们还想对子组件传参的话该怎么办呢?显然这样写的话是没办法实现的。

    其中一种办法就是使用redux等状态管理插件来实现, 但是如果你的项目不是特别大的话, 无疑会搞得更复杂, 并且还会增加额外的学习成本。   

    所以我们可以用第二种方法: 使用React自带的React.Children和React.cloneElement这两个个Api。

    借助React.Children, 我们可以这样做, 给子组件传递属性: 

class Parent extends Component {
  render() {
    return (<div>
      <div>
        这是正常的内容
      <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值