React-props的children属性

在 React 中,子组件标签之间的内容(无论是文本、HTML 元素还是其他 React 组件)不会直接显示在页面上,而是会被收集到子组件的 props.children 属性中;

  • 没有在子组件标签之间传递任何内容

    javascript 复制代码
    - 父组件: 
    <Son />
    
    - 子组件
    props.children // undefined
  • 传递字符串

    javascript 复制代码
    - 父组件
      <Son>Hello World</Son>
    - 子组件
      props.children // 'Hello World'
  • 传递单个html元素

    javascript 复制代码
    - 父组件
      <Son><div>Hello World</div></Son>
    - 子组件
      props.children // vnode
  • 传递多个html元素

    javascript 复制代码
    - 父组件
     <Son>
       <header>头部</header>
       <footer>尾部</footer>
     </Son>
    - 子组件
     props.children // [vnode, vnode]

使用:其实props.children属性和vue中的默认插槽有点像

  • vue中:在子组件中使用slot占位 将(父组件中)子组件标签间内容渲染到slot位置;

    javascript 复制代码
    <!-- 子组件 -->
    <template>
      <div class="card">
        <h3>{{ title }}</h3>
        <slot></slot> <!-- 相当于 React 的 {props.children} -->
      </div>
    </template>  
    
    <!-- 父组件使用 -->
    <Card title="用户信息">
      <p>这是插槽内容</p>
      <button>编辑</button>
    </Card>
  • React中:将(父组件中)子组件标签间的内容添加在子组件props.children中,在子组件中想要使用的位置使用即可( {children} )

    javascript 复制代码
    // 子组件
    function Card({ title, children }) {
     return (
       <div className="card">
         <h3>{title}</h3>
         {children} <!-- 相当于 Vue 的 <slot></slot> -->
       </div>
     );
    }
    
    // 父组件使用
    <Card title="用户信息">
     <p>这是children内容</p>
     <button>编辑</button>
    </Card>
相关推荐
OEC小胖胖2 小时前
组件化思维(下):表单与交互组件,倾听用户的心声
前端·微信小程序·小程序·微信开放平台
八月十八2 小时前
React常用Hooks及使用示例大全
前端·javascript·react.js
长安——归故李2 小时前
【PLC程序学习】
java·c语言·javascript·c++·python·学习·php
狼爷2 小时前
前端项目从 Windows 到 Linux:构建失败的陷阱
前端·node.js·angular.js
1024小神2 小时前
vitepress多语言实现第一次跟随浏览器,第二次不跟随
前端
叫我詹躲躲2 小时前
🚀 震撼!10道DFS&BFS神级题目让你的算法能力飙升300%
前端·leetcode
ssshooter2 小时前
WebGL 切换 Shader 的策略
前端·webgl
WDyinh2 小时前
积分球领取补位动画实现
前端·javascript
前端开发爱好者2 小时前
v5.0 版本发布!Vue3 生态最强大的 3D 开发框架!
前端·javascript·vue.js