Reactjs 应该是组件';s呈现方法的返回类型是React.ReactNode还是JSX.Element?

Reactjs 应该是组件';s呈现方法的返回类型是React.ReactNode还是JSX.Element?,reactjs,typescript,Reactjs,Typescript,这两种方法似乎都不会导致编译错误,但有什么区别?一种方法比另一种更可取吗?这个问题在 致: 无论组件最终呈现什么,React.createElement始终返回一个对象,即JSX.Element接口,但React.ReactNode是组件所有可能返回值的集合 JSX.Element->React.createElement的返回值 React.ReactNode->组件的返回值 一般来说,我认为JSX.Element专门描述了React.createElement的接口,范围很窄,而Reac

这两种方法似乎都不会导致编译错误,但有什么区别?一种方法比另一种更可取吗?

这个问题在

致:

无论组件最终呈现什么,
React.createElement
始终返回一个对象,即
JSX.Element
接口,但
React.ReactNode
是组件所有可能返回值的集合

  • JSX.Element
    ->
    React.createElement的返回值
  • React.ReactNode
    ->组件的返回值

一般来说,我认为
JSX.Element
专门描述了
React.createElement
的接口,范围很窄,而
React.ReactNode
更广,涵盖了组件可能返回的所有值。

这取决于它。ReactJS原则上可以:

type RenderType=JSX.Element*|数组|字符串|数字|布尔| null
//*包括门户、片段
//对于函数和类组件
//(React类型声明中不存在类型)
TS渲染类型当前为:

  • ReactNode
    (比React允许的范围宽)

  • JSX.Element | null
    (比React更具限制性)


JSX.Element
ReactElement
大致相同,可以互换使用

你能举一些例子吗?但是对于组件
render()
方法,它应该是
render():React.ReactNode
还是
render():JSX.Element
?我不确定每种方法的实际后果是什么。我认为在某些情况下,React组件可能不会返回JSX。您可以返回另一个函数或者返回一个
字符串
,在这种情况下,我认为
JSX.Element
可能无法工作。
type RenderType = JSX.Element* | Array<RenderType> | string | number | boolean | null
// * includes Portal, Fragment
// for both function and class components
// (type doesn't exist in React type declarations)