“ react-native init”生成的“ App”声明中发生了什么?

时间:2019-11-23 05:57:25

标签: reactjs react-native

当我这样做时:

npx react-native init MyTestApp

创建的App.js文件包括以下行:

const App: () => React$Node = () => {

我熟悉函数的箭头语法,但是

1)App之后的冒号是什么?

2)React$Node中的美元符号在做什么? React已导入,但是我看不到任何名为React$Node的变量。

1 个答案:

答案 0 :(得分:1)

它来自Flow的类型定义,这意味着常量App是函数类型,它返回ReactNode.

ReactNode是以下类型之一:

 ReactChild | ReactFragment | ReactPortal | boolean | null | undefined

这意味着功能App可以返回任何有效的JSX(以本机方式从View,Text,.etc中返回),ReactFragment,React.Portal,布尔值,null,未定义

如果您对美元符号感到困惑,请点击此处,获得解释链接。 https://www.saltycrane.com/flow-type-cheat-sheet/latest/

名称分别为$的“专用”或“魔术”类型有单独的部分。请参阅此处的注释,并在此处进行评论。更新:这些类型现在已在此处记录。

为简便起见,您可以将其视为React中的Node(将其视为作用域/命名空间)

这是卢卡斯给出的最好的解释,请随时提出任何疑问。