reactjs - TypeScript 中的 React 组件类型
问题描述
在 TypeScript 中描述反应组件类型的正确方法是什么?假设我们有一个返回反应组件的函数。功能:
const getTabContent: () => ReactElement = () => {
switch (tab) {
case 1:
return <Images images={images} onSelect={onSelect}/>;
default:
return <Search onSelect={onSelect}/>;
}
};
在这里,我将返回类型描述为ReactElement,但我想知道它是否正确,或者我应该将其描述为ReactComponentElement,甚至以某种方式完全不同?此外,这两种类型都是泛型的,如果其中一种是正确的,如何完全描述它们?
UPD ReactElement 似乎适合这里,因为例如 FC (FunctionComponent) 返回它
解决方案
功能组件的正确类型是React.FunctionComponent
或者React.FC
是它的快捷别名
import React, { FC } from 'react';
const getTabContent: FC = () => {
switch (tab) {
case 1:
return <Images images={images} onSelect={onSelect}/>;
default:
return <Search onSelect={onSelect}/>;
}
};
该FC
类型只是将children
属性添加到props
功能组件的参数中,以便您可以访问它:
const SomeComponent: FC = ({ children }) => (
<div className="hello">{children}</div>
);
FC
是一种通用类型,因此您可以向组件“添加”道具:
interface SomeComponentProps {
foo: string;
}
const SomeComponent: FC<SomeComponentProps> = ({ children, foo }) => (
<div className={`Hello ${foo}`}>{children}</div>
);
推荐阅读
- r - 为什么装袋树的错误率远高于单棵树的错误率?
- javascript - 如何获取传单图层组 ID?
- oracle - 如何对 Group By 查询返回的计数执行范围桶
- rust - 使用 PyAny 将 Rust 创建的对象从 Python 传递回 Rust
- linux - 从 shell 脚本运行时,top 和 grep 不输出任何内容
- javascript - 禁止用户输入输入
- clojure - 克洛朱尔。“lein test”两次执行文件
- java - 了解 Java Stream reduce - 并行与串行
- amazon-web-services - 在特定时间触发 aws lambda
- flutter - 有没有办法在颤动中按下按钮时自动填充文本表单字段