此问题在此处已有答案:
When to use JSX.Element vs ReactNode vs ReactElement?(4个答案)
昨天关门了。
我有以下组件:
const MyComponent: React.FC = function(){
return "hello world"
}
它是正确的,而且不是假的,但是,typescript抱怨这是不正确的,因为返回类型是字符串,它认为它应该是一个JSX元素。
那么这里使用的正确类型是什么呢?
我想简单地定义一个组件,所以它仍然会理解参数的类型,所以 props 和 ref,
所以它仍然是一个组件
我不想写: string
作为返回类型,因为它不完全正确,它不是一个普通的函数,它是一个组件。
但是我认为FC
类型的实现是错误的,或者我应该使用另一种类型。
哪种类型定义组件?
2条答案
按热度按时间zujrkrfu1#
使用
React.ReactNode
:https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAJQKYEMDG8BmUIjgcilQ3wFgAoCmATzCTgAUcwBnOAXjgG8K4+4A9ALgA6MRQC+FCkgAekWHEwBXAHYZgEVXACy1AMK5IqpKpgAKMMxYAuRtYCUd5OhgiXGAHIQAJvR7k-HBEMMpQ2vgAEkgANjEQcADu0DE+AIRk5BJAA
n8ghc7c12#
一般来说,不鼓励使用
React.FunctionComponent
或它的简写React.FC
。我发现它最终会导致摩擦和流失,而收益很少。你可以阅读更多关于它的here,但这里是内幕:使用
React.FC
的优点:children
...这并不总是理想的使用
React.FC
的缺点:children
,这并不总是可取的。几年前,当他们最初不鼓励使用它时,我停止使用它,我不能更高兴了。你只需像往常一样编写函数,TS将推断返回类型。我通常像这样单独定义我的props: