当前位置: 首页 > news >正文

WHAT - React 组件的 props.children 属性

目录

  • 一、什么是 children
  • 二、基本用法
  • 三、类型定义(TypeScript)
  • 四、一些高级用法
    • 1. 条件渲染 children
    • 2. 多个 children 插槽(命名插槽)
  • 五、children 的优势
  • 总结

在 React 中,children 是一个非常重要且特殊的 内置属性,它表示组件标签之间的嵌套内容。

一、什么是 children

举个例子:

const MyCard = ({ children: React.ReactNode }) => {
  return <div className="card">
    <div>title</div>
    {children}
  </div>;
};

<MyCard>
  <p>这是卡片内容</p>
</MyCard>

在这个例子中:

  • <p>这是卡片内容</p> 就是传给 MyCardchildren
  • MyCard 组件可以通过 props.children 访问到它

二、基本用法

const Wrapper = ({ children }: { children: React.ReactNode }) => {
  return <div className="wrapper">{children}</div>;
};

// 使用
<Wrapper>
  <h1>Hello</h1>
  <p>World</p>
</Wrapper>

Wrapper 中,children 就是一个 ReactNode 类型的元素数组。

三、类型定义(TypeScript)

常用类型写法:

类型描述
React.ReactNode最常用,支持所有可渲染内容(JSX、字符串、null、数组等)
React.ReactElement更严格,只允许一个有效的 React 元素
ReactNode[]明确是多个节点(不推荐,ReactNode 已包含)
type Props = {
  children: React.ReactNode;
};

四、一些高级用法

1. 条件渲染 children

const ConditionalBox = ({ children, visible }: { children: React.ReactNode; visible: boolean }) => {
  return visible ? <div>{children}</div> : null;
};

2. 多个 children 插槽(命名插槽)

const Layout = ({ header, content }: { header: React.ReactNode; content: React.ReactNode }) => (
  <div>
    <div>{header}</div>
    <main>{content}</main>
  </div>
);

<Layout 
  header={<h1>头部</h1>}
  content={<p>正文内容</p>}
/>

五、children 的优势

  • ✅ 灵活嵌套
  • ✅ 适合做布局容器组件、UI 包裹组件
  • ✅ 组合式组件(如 Card, Modal, Tabs)几乎都依赖 children

总结

内容
定义children 是组件内部嵌套的内容
类型React.ReactNode 最常用
用途实现通用组件、插槽功能
特点灵活、结构清晰、提升复用性

相关文章:

  • 7.时序约束辅助工具
  • 【操作系统(Linux)】——多线程对共享变量访问的同步与互斥
  • Collection vs Collections:核心区别与面试指南
  • 【CornerTag组件详解:优雅的角标设计与实现】
  • 【MCAL】TC397+EB-tresos之LIN通信配置实战(单线低速通信)
  • Agent智能体技术全景解析:四大开源项目深度评测与实战指南
  • AI处理漫画转视频
  • JavaWeb 课堂笔记 —— 05 前端工程化
  • 堆内存、本地内存、堆外内存、直接内存的区别
  • 1306_10-习题1_6_10-课后习题-高等数学
  • vllm 部署 Qwen2.5-VL-7B-Instruct 识别程序(docker版)
  • 学习笔记—C++—类和对象(2)
  • 优质LLM Agent项目推荐清单
  • 字符串替换 (模拟)神奇数 (数学)DNA序列 (固定长度的滑动窗口)
  • 为什么 npm list -g 没显示 node_modules?✨
  • 【Linux】TCP_Wrappers+iptables实现堡垒机功能
  • 基于 SysTick 定时器实现任务轮询调度器
  • 嵌入式硬件篇---Uart和Zigbee
  • 基于MATLAB/simulink的信号调制仿真--AM调制
  • 数学知识——欧拉函数
  • 公司网站建设目的和意义/百度客服人工电话24
  • 广州北京网站建设公司哪家好/竞价排名是按照什么来计费的
  • 中国10大品牌装修公司/关键词整站优化
  • 阿里巴巴国际站入驻费用及条件/推广网页
  • 建站做网站/优质的seo快速排名优化
  • 做企业网站用什么字体/google官网入口注册