首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TS Config JSX: ReactJSX vs React

TS Config JSX: ReactJSX vs React
EN

Stack Overflow用户
提问于 2021-05-31 15:37:47
回答 1查看 2.6K关注 0票数 21

在使用类型记录和React时,我们必须在jsx文件中在compilerOptions中指定tsconfig.json

它有preservereactreact-nativereact-jsx等作为允许值。

代码语言:javascript
复制
{
  "compilerOptions": {
    "jsx": "react-jsx" | "react" | "react-native" | "preserve"
  }
}

reactreact-jsx主要用于web,我想了解这两个选项之间的区别,以及选择什么时候。

react将jsx转换为React.createElement()

react-jsx将jsx转换为_jsx()_jsxs()

另外,_jsx()_jsxs()有什么区别?

EN

回答 1

Stack Overflow用户

发布于 2022-08-28 13:14:08

最好使用react-jsx,解释如下:

两者的差异

首先,请记住,此选项仅控制在JavaScript文件中发出JSX结构的方式。这只会影响在.tsx文件中启动的JS文件的输出。

因此,两者之间的区别仅仅是JS文件的输出。

打字本文件输出JS文件

默认情况:"react"

代码语言:javascript
复制
import React from 'react';
export const HelloWorld = () => React.createElement("h1", null, "Hello world");

React 17转换:“react jsx”

代码语言:javascript
复制
import { jsx as _jsx } from "react/jsx-runtime";
import React from 'react';
export const HelloWorld = () => _jsx("h1", { children: "Hello world" });

哪种更好些呢?

正如用反应文件编写的那样,实际上,"react"选项只是将JSX转换为常规javascript的一种旧方法,而这种方式并不完美:

  • 因为JSX是编译到React.createElement中的,所以如果使用JSX,就需要在作用域内反应。
  • 有些性能改进和简化是React.createElement不允许的。

为了解决这些问题,Resive17在React包中引入了新的入口点,这些入口点只供像Babel和TypeScript这样的编译器使用。

当您使用“React”选项时,您将使用这个新的Reactive17编译。

因此,最好使用“react jsx”选项。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67776707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档