JSX模式应该反应还是反应原生?

时间:2017-08-16 21:57:32

标签: typescript react-native

基于this TypeScript official documentation

提出这个问题
  

反应模式将发出React.createElement,不需要去   在使用之前通过JSX转换,输出将有一个   .js文件扩展名。

     

react-native 模式相当于   保留所有JSX,但输出将有一个   .js文件扩展名。

但是,我见过的所有教程都有反应模式:

"jsx": "react"

虽然这很有效,但我甚至没有看到警告,但我想了解React Native如何/为什么编译TSX并且能够毫无问题地加载它们。 / p>

基本上:

  1. 为什么在React Native支持react-native模式时创建react模式?
  2. 是否有任何表现理由使用其中一个?

1 个答案:

答案 0 :(得分:4)

在React Native出现之前,这个世界很干净:

| File Extension |  Has JSX Syntax  |  Has Type Annotations  |
--------------------------------------------------------------
|   .tsx         |       Yes        |          Yes           |
|   .ts          |       No         |          Yes           |
|   .jsx         |       Yes        |          No            |
|   .js          |       No         |          No            |

当TypeScript看到.tsx文件时,它可以决定是否发出.jsx个文件(jsx: preserve)或.js个文件(jsx: react下)。使用JSX语法发出.js文件是不可能的(因为 JSX不是合法的JavaScript语法)。

然后React Native说"我们在.js文件中有JSX语法!",这很奇怪,因为它是非法的,但无论如何。因此,如果您在TypeScript中编写React Native代码,有时您希望TS获取.tsx个输入文件并生成仍然具有JSX语法的.js文件。因此,JSX模式react-native诞生了。