美文网首页
React17以后全新的JSX转换

React17以后全新的JSX转换

作者: Poppy11 | 来源:发表于2023-06-29 11:01 被阅读0次

首先,在浏览器中无法直接使用jsx,需要借助babel将jsx代码转化为javaScript。

新的转换有何不同?

当你使用 JSX 时,编译器会将其转换为浏览器可以理解的 React 函数调用。旧的 JSX 转换会把 JSX 转换为 React.createElement(...) 调用。

例如,假设源代码如下:

import React from 'react';

function App() {
  return <h1>Hello World</h1>;
}

旧的 JSX 转换会将上述代码变成普通的 JavaScript 代码:

import React from 'react';

function App() {
  return React.createElement('h1', null, 'Hello world');
}

此处就涉及到之前被面试问到的一个问题:为什么在每个jsx文件中我们都需要引入React,哪怕我们在代码中没有用到React?
就是因为我们在使用jsx时,需要转换,但是这个转换是调用了React.createElement这个方法。

为了解决使用jsx必须要在react的环境中使用,新的 JSX 转换不会将 JSX 转换为 React.createElement,而是自动从 React 的 package 中引入jsx函数并调用。

假设你的源代码如下:

function App() {
  return <h1>Hello World</h1>;
}

下方是新 JSX 被转换编译后的结果:

// 由编译器引入(禁止自己引入!)
import {jsx as _jsx} from 'react/jsx-runtime';

function App() {
  return _jsx('h1', { children: 'Hello world' });
}

相关文章

  • react API学习整理

    基础知识 1、jsx 转换 javascript 对于每一个 jsx 标签,babel 插件都会转换成 js 代码...

  • 2020 动手写个 react (2)

    我们写一段 jsx ,有关 jsx 语法这里暂不做过介绍,留下伏笔 然后将上面 jsx 通过 babel 转换为 ...

  • 拜读Preact源码有感

    jsx本质 JSX是一种嵌入式的类似XML的语法,它可以被转换成合法的JavaScript,转换的语义是依据不同的...

  • react学习-4.JSX语法进阶

    既然JSX是JavaScript 的语法扩展,与JavaScript之间等价转换,那自然而然,我们可以在jsx中使...

  • 3-2-理解 JSX

    事实上, JSX 会被一个 babel 的 编译器 转换成 JavaScript 代码. 比如下面这行 JSX 代...

  • TypeScript基础入门之JSX(一)

    转发 TypeScript基础入门之JSX(一) 介绍 JSX是一种可嵌入的类似XML的语法。 它旨在转换为有效...

  • jsx(1)-介绍

    什么是jsx JSX其实是嵌入到JavaScript中的一种结构语法; babel会将 转换成React.cre...

  • 2020-05-31

    JSX语法:html 和 javascript合起来 给html转换成jsx语句:转化时不能有俩平级标签,必须要有...

  • Reactjs 踏坑指南2: JSX&&组件

    JSX 知识准备 JSX 并不是一门全新的语言,仅仅是一个语法糖,允许开发者在javascript中编写XML语言...

  • Webpack4 快速上手

    Webpack 基础 为什么要使用Webpack 转换ES6语法 转换JSX CSS前缀补全/预处理器 压缩整合 ...

网友评论

      本文标题:React17以后全新的JSX转换

      本文链接:https://www.haomeiwen.com/subject/okbaydtx.html