You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React.FC是否不再默认包含children属性?需显式使用PropsWithChildren?

React 18中FC类型不再默认包含children的相关问题解答

1. 此前写法确实可行

在React 17及更早版本的TypeScript类型定义中,FC(FunctionComponent的别名)默认自带了children属性,所以你之前写的代码:

const SomeComponent:FC<{label: string}> = ({label, children}) => (
  // 组件内容
)

完全符合当时的类型规范,是合法且常用的写法。

2. 变更的原因

React团队在React 18对应的@types/react包中,移除了FC类型默认包含的children属性,核心原因有两点:

  • 类型更精准:很多函数组件并不需要接收children,默认包含会让这些组件的props类型出现冗余。显式通过PropsWithChildren包裹需要children的组件props,能让组件的API声明更清晰,贴合TypeScript严格类型检查的设计思路。
  • 减少误用困惑:之前默认包含children的设计,导致一些不需要children的组件也能被传入子元素,类型检查不会报错,容易引发不必要的渲染问题或逻辑混淆。移除默认children后,组件是否支持子元素完全由开发者显式控制。

3. 为什么没收到通知?

这个变更属于TypeScript类型定义层面的更新,而非React核心运行时的功能变更:

  • 相关说明主要发布在@types/react的版本更新日志中,而非React官方的主版本发布文档(React 18的官方文档重点聚焦在并发渲染等核心功能特性)。
  • 该变更属于渐进式兼容的类型调整,不会导致代码运行时错误,只是触发TypeScript的类型检查报错,因此没有大规模的官方推送通知,需要开发者主动关注类型依赖包的更新说明。

内容的提问来源于stack exchange,提问作者Michael Lorton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:05:19