【React】React17+配置Babel实现无需导入React就可以使用jsx

React17以后,无需引入React包,就可以使用jsx语法,官网说明

Babel版本

首先 Babel 要使用 V7.9.0 以上

如果使用的是 @babel/plugin-transform-react-jsx

javascript 复制代码
npm update @babel/core @babel/plugin-transform-react-jsx

如果使用的是 @babel/preset-react

javascript 复制代码
npm update @babel/core @babel/preset-react

配置

旧的转换的默认选项为 {"runtime": "classic"},改为 {"runtime": "automatic"}

.babelrc 配置如下:

使用 @babel/preset-react

javascript 复制代码
{
  "presets": [
    ["@babel/preset-react", {
      "runtime": "automatic"
    }]
  ]
}

使用 @babel/plugin-transform-react-jsx

javascript 复制代码
{
  "plugins": [
    ["@babel/plugin-transform-react-jsx", {
      "runtime": "automatic"
    }]
  ]
}

删除项目中原有的React引入

因为新的 JSX 转换会自动引入必要的 react/jsx-runtime 函数,因此使用 JSX 时,将无需再引入 React,保留也无伤大雅。

javascript 复制代码
cd your_project
npx react-codemod update-react-imports
相关推荐
隔窗听雨眠几秒前
Chrome 安全机制深度解析
前端·chrome·安全
Hello--_--World1 分钟前
React:解释什么是虚拟Dom?它的工作原理及其性能优化机制,深入理解 JSX、如何理解 UI = f(state)?
react.js·ui·性能优化
史迪仔011216 分钟前
[QML] Qt6/Qt5四大渐变效果实战指南
开发语言·前端·c++·qt
果壳~17 分钟前
【Uniapp】【rich-text】富文本展示以及图片预览功能解决方案
前端·javascript·uni-app
z194089206618 分钟前
在线生成背景:字号层级怎么做才像「正式物料」
前端·javascript·html
skilllite作者22 分钟前
GEO 是什么:从搜索引擎到「对话式答案」的信息可见性
java·前端·笔记·安全·搜索引擎·agentskills
Hello--_--World25 分钟前
React:useState 函数式更新、useContext 全解析、useReducer 深度解析
前端·react.js·前端框架
李白的天不白28 分钟前
vue优化建议
前端·javascript·vue.js
前端老石人31 分钟前
Chrome DevTools 调试入门:从零开始排查 CSS 问题
前端·css·chrome devtools
恋猫de小郭34 分钟前
经典,Flutter iOS 又修复了一个构建问题,还是很抽象
android·前端·flutter