【React.FC详细讲解】

React.FC

React.FC 是一个 TypeScript 中的泛型类型别名,用来定义一个React函数式组件(Functional Component)。其全称是React.FunctionComponent,这种类型为组件提供了静态类型检查,以确保组件的正确使用。

函数式组件是React中的一类组件,它是用普通JavaScript函数或者箭头函数来定义的,相对于更早期的基于类的组件(Class Components),函数式组件通常更简单,并且可以与React Hooks一起使用,以实现类似类组件中的状态管理和副作用处理。

在 TypeScript 中,React.FC 同时也隐式地为你的组件提供了children的定义,即假定你的组件可以包含children,但是,请注意,从React 18的Typing推荐来看,React团队建议不再使用React.FC,原因是它会默认包含children,即便实际组件可能不需要接受children。相反,他们推荐直接定义组件的props。

下面是一个React函数组件示例,该组件的Props有一个 title 字段:

不使用 React.FC:

tsx 复制代码
interface MyComponentProps {
  title: string;
  // 如果组件确实需要 children,则显式声明
  // children?: React.ReactNode;
}

const MyComponent = ({ title }: MyComponentProps) => {
  return <h1>{title}</h1>;
};

使用 React.FC:

tsx 复制代码
interface MyComponentProps {
  title: string;
}

const MyComponent: React.FC<MyComponentProps> = ({ title, children }) => {
  return (
    <div>
      <h1>{title}</h1>
      {children}
    </div>
  );
};

在上个例子中,即使 MyComponentProps 没有声明 children 属性,使用 React.FC 也会自动提供 children 的类型定义。这在你不希望你的组件接受 children 时可能会造成问题或混淆。

因此,建议明确组件是否应该有 children,如果不应该有,则不要使用 React.FC,如当前的最佳实践所示。这样能获得更清晰的API设计和类型安全。

相关推荐
gogoing2 分钟前
Babel 配置与工具
前端·javascript
亲亲小宝宝鸭2 分钟前
重新install,项目就跑不起来了?!
前端·npm
Mike117.16 分钟前
GBase 8a 物化视图依赖和 DDL 风险排查记录
java·服务器·前端
蜡台32 分钟前
Vue3 Hook 与 Store 状态管理:深度解析与选型指南
前端·javascript·vue.js
無名路人1 小时前
小程序点餐页吸顶滚动
前端·微信小程序·ai编程
小小小前端啊1 小时前
前端手写代码大全
前端
李白的天不白1 小时前
大规模请求数据并发问题
java·前端·数据库
冲浪中台2 小时前
【无标题】
前端·低代码
openKaka_2 小时前
beginWork 的第一站:HostRoot 如何把 App 接入 Fiber 树
前端·javascript·react.js
我命由我123452 小时前
Dart - Dart SDK、Hello World 案例、变量声明、常量声明、常量 final、字符串类型
前端·flutter·前端框架·html·web·dart·web app