我是TypeScript的新手。以下哪个声明在社区中是首选,为什么?
interface MyComponentProps {
children: ReactNode;
}
// Option 1
const MyComponent: React.FC<MyComponentProps> = ({ children }) => <>{children}</>;
// Option 2
const MyComponent = ({ children }: MyComponentProps) => <>{children}</>;
我认为选项1可能会提供更多的打字信息。但是,选项2似乎更易于阅读。
答案 0 :(得分:2)
FC
类型已经包含children
属性,因此,在这种特定情况下,只需将其声明为FC
类型就可以。
import React, { FC } from 'react';
const Component : FC = ({ children }) => <div>{children}</div>;
如果您需要的还不止这些,则可以使用第一个选项,如下所示:
import React, { FC } from 'react';
interface ComponentProps {
title: string;
subtitle?: string;
}
const Component : FC<ComponentProps> = ({ title, subtitle }) => (
<div>
<span>{title}</span>
<span>{subtitle}</span>
</div>
);
第一个选项几乎是我在许多不同项目中看到组件道具的唯一方式。
FC
类型(顺便说一下,它是FunctionComponent
的别名)提供了一些有用的声明,这些声明在第二个选项中会丢失。