最佳答案
我目前正在将一个React应用程序迁移到TypeScript。到目前为止,这工作得很好,但是我的render
函数的返回类型有一个问题,特别是在我的函数组件中。
我一直使用JSX.Element
作为返回类型,现在这不再工作,如果一个组件决定不渲染任何东西,即返回null
,因为null
不是JSX.Element
的有效值。这是我旅程的开始。我在网上搜索了一下,发现应该使用ReactNode
,其中包括null
和其他一些可能发生的事情。
然而,在创建函数式组件时,TypeScript会抱怨使用ReactNode
类型。同样,经过一番搜索,我发现对于功能组件,应该使用ReactElement
。然而,如果我这样做,兼容性问题就消失了,但现在TypeScript再次抱怨null
不是一个有效值。
长话短说,我有三个问题:
JSX.Element
, ReactNode
和ReactElement
之间有什么区别?render
方法返回ReactNode
,而功能组件返回ReactElement
?null
?