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渲染类型当前为:
- :
(比React允许的范围宽)ReactNode
- :
(比React更具限制性)JSX.Element | null
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)