JSX 模式应该选择 React 还是 React Native?

3
基于此 TypeScript 官方文档的描述(英文链接):
引用如下内容:

react 模式会发出 React.createElement,不需要经过 JSX 转换即可使用,并且输出将具有 .js 文件扩展名。

react-native 模式等效于保留所有 JSX,但输出将具有 .js 文件扩展名。

但是,我看到的所有教程都使用 react 模式:
"jsx": "react"

虽然这个方法完美地运行,并且我甚至没有看到警告,但我想了解为什么React Native可以编译TSX并能够毫无问题地加载它们。

基本上:

  1. 为什么要创建react-native模式,当React Native支持react模式时?
  2. 在使用其中一个模式的情况下,是否存在任何性能原因?
1个回答

11

在 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`文件(在`jsx: preserve`下),或者是普通的`.js`文件(在`jsx: react`下)。不可能发射包含JSX语法的`.js`文件(因为JSX不是合法的JavaScript语法)。
然后React Native说,“我们将在`.js`文件中使用JSX语法!”,这很奇怪,因为这是不合法的,但无论如何。因此,如果你正在使用TypeScript编写React Native代码,有时希望TS采用`.tsx`输入文件并生成仍带有JSX语法的`.js`文件。因此,产生了JSX模式`react-native`。

3
必须喜欢 JavaScript 意大利面世界(来自 C#)……虽然这回答了第一个问题,但你能解释一下在 react-native 中使用 react 模式是否会有任何性能损失吗? - Camilo Terevinto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接