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>
相关推荐
没事写点啥9 小时前
WeKnora 回答溯源
前端·后端·ai编程
LuHang9 小时前
Vue3 大屏项目 MQTT 实战:机场与无人机 OSD 实时数据总线
前端
2401_885885049 小时前
芬兰语音通知接口怎样对接?语音提醒接入流程
android·前端·python·php·语音识别
铁皮饭盒10 小时前
这6个小模型各有绝活, 且都可cpu/浏览器端运行
前端·后端
徐小夕10 小时前
JitKnow AI知识库 4.7 发布|多文档推理+拖拽 Agent + 技能库,打造更懂业务的 AI 知识中台
前端·vue.js·github
小poop10 小时前
从“雷峰塔”到“对象”:JavaScript基础语法入门指南
前端·javascript
ReStock活库10 小时前
Zephyr异步SPI调用返回后,为什么不能立即复用发送缓冲区?
java·前端·网络
计算机魔术师10 小时前
半年营收163亿,算力债却到7800亿,这账谁算得清
前端
chunyublog11 小时前
HDFS 上传文件名空格问题排障教程
前端·javascript·npm
?abc!11 小时前
(贪心)621. 任务调度器
java·前端·c#