2017-08-16 90 views
1

立足这个问题上this TypeScript official documentationJSX模式应该反应还是反应原生?

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

反应本地模式是 相当于保留,因为它使所有JSX,但输出,而不是有一个 .js文件扩展名。

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

"jsx": "react" 

虽然这完美的作品,我甚至不看到一个警告,我想了解如何/为什么React Native编译TSX并且能够毫无问题地加载它们。

基本上是:

  1. 为什么开创了react-native模式,如果REACT本地支持react模式?
  2. 会有任何性能的原因使用一个在另一个?

回答

4

反应过来之前母语来了,世界是非常干净的:

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

当打字稿看到.tsx文件,它可以决定是否要发出.jsx文件(jsx: preserve下)或.js文件(下jsx: react)。不可能在其中发布带有JSX语法的.js文件(因为JSX不是合法的JavaScript语法)。

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

+0

爱上JavaScript意大利面世界(来自C#)......虽然这确实回答了第一个问题,但是你能解释在react-native中使用'react'模式是否会有任何性能问题吗? –