React 和 TypeScript:什么是 React.FC 以及为什么要使用它?

2025-06-08

React 和 TypeScript:什么是 React.FC 以及为什么要使用它?

React.FC 是 React 中“函数组件”的缩写。它是一种泛型类型,允许你指定函数组件将接受的 props。

使用 React.FC 有很多好处:

  1. 它为组件期望接收的 props 提供类型安全。这有助于尽早发现错误,并使您的代码更易于理解。

  2. 它使重构组件的 props 变得更容易。例如,如果你想重命名某个 prop,TypeScript 编译器会捕获所有使用该 prop 的地方,并帮助你更新它们。

  3. 只需查看组件道具的类型定义,就可以更轻松地了解其预期形状。

以下是如何使用 React.FC 的示例:

import React from 'react';

interface Props {
  name: string;
  age: number;
  onClick: () => void;
}

const MyComponent: React.FC<Props> = ({ name, age, onClick }) => {
  return (
    <div>
      <h1>{name}</h1>
      <p>Age: {age}</p>
      <button onClick={onClick}>Click me</button>
    </div>
  );
};

Enter fullscreen mode Exit fullscreen mode

在此示例中,MyComponent 是一个函数组件,它接受 Props 类型的 props,其中包括一个名称字符串、一个年龄数字和一个 onClick 函数。该组件使用 React.FC 类型定义,这使得 TypeScript 能够检查组件是否被正确使用,并为组件的 props 提供类型信息。

当你想为函数组件指定 defaultProps 对象时,也可以使用 React.FC。例如:

import React from 'react';

interface Props {
  name: string;
  age: number;
  onClick: () => void;
}

const MyComponent: React.FC<Props> = ({ name, age, onClick }) => {
  return (
    <div>
      <h1>{name}</h1>
      <p>Age: {age}</p>
      <button onClick={onClick}>Click me</button>
    </div>
  );
};

MyComponent.defaultProps = {
  name: 'John',
  age: 25,
  onClick: () => {},
};

Enter fullscreen mode Exit fullscreen mode

在此示例中,MyComponent 函数组件具有一个 defaultProps 对象,该对象指定了 name、age 和 onClick 属性的默认值。如果在渲染组件时未传入相应的属性,则会使用这些默认值。

defaultProps 是什么?
在 React 函数组件中,defaultProps 对象用于指定 props 的默认值,这些默认值在使用组件时可以省略。如果你想在父组件未提供 props 的情况下为其提供后备值,这将非常有用。

使用 defaultProps 对象有很多好处:

  1. 它允许你为 prop 指定一个 fallback 值,以防 prop 未提供。这有助于防止将未定义的值传递给你的组件,从而避免导致错误。

  2. 只需查看 defaultProps 对象就可以更轻松地了解组件 props 的预期形状。

  3. 它可以让您更轻松地测试组件,让您专注于使用一组特定的道具来测试组件的行为,而不必每次都提供所有可能的道具。

结论:
当您想要在 React 应用程序中定义一个函数组件并且想要指定该组件期望接收的 props 类型时,您应该使用 React.FC。

希望以上内容对您有所帮助!如有任何疑问,请随时联系我。

链接地址:https://dev.to/elhamnajeebullah/react-typescript-what-is-reactfc-and-why-should-i-use-it-4029
PREV
使用 JavaScript 对象构建项目。
NEXT
👫当你和一位用户体验设计师约会时🤦‍♀️😱| 搞笑(素描)