`React.FC` 是一个泛型类型,用于定义函数组件的类型
一、类型定义和代码可读性
1. 明确组件类型
使用`React.FC`定义一个组件时,使得组件的输入(props)和输出(返回的 React 元素)都有明确的类型定义。
import React from "react";
interface Props {
name: string;
}
const MyComponent: React.FC<Props> = ({ name }) => {
return <div>Hello, {name}!</div>;
};
2. 增强代码可读性
看到`React.FC`就表明这是一个 React 函数组件。同时可以查看组件 Props 的类型。
二、隐式的属性类型和默认值
1. 隐式的属性类型检查
使用`React.FC`后,TypeScript 会自动将`children`的类型设置为`ReactNode`。
import React from "react";
const MyComponent: React.FC = ({ children }) => {
return <div>{children}</div>;
};
// 正确的用法,因为 `React.FC` 自动处理了 `children` 类型
<MyComponent>Hello World</MyComponent>;
// 错误的用法,因为 `number` 类型的子元素不符合 `ReactNode` 类型(除了特定情况)
<MyComponent>{123}</MyComponent>;
2. 默认属性值支持
`React.FC`还支持为组件的属性设置默认值。在组件定义中,可以通 `defaultProps`属性来设置默认值。
import React from "react";
interface Props {
count: number;
}
const MyComponent: React.FC<Props> = ({ count }) => {
return <div>{count}</div>;
};
MyComponent.defaultProps = { count: 0 };
// 可以不传 `count` 属性,此时 `count` 的值为默认值 `0`
<MyComponent />;