vue2+jsx中 使用了@babel/core babel-loader8.3 提示React is not defined 改如何解决
时间: 2024-03-21 14:40:48 浏览: 178
如果你在 Vue 2 + JSX 中使用了 `@babel/core` 和 `babel-loader@8.3`,并且遇到了 `React is not defined` 的问题,那么可能是因为你的 Babel 配置没有正确地设置。
要解决这个问题,请按照以下步骤操作:
1. 在项目中安装 `@vue/babel-preset-jsx`。
```
npm install @vue/babel-preset-jsx --save-dev
```
2. 在 `.babelrc` 文件中添加以下内容:
```
{
"presets": [
"@vue/app",
"@vue/babel-preset-jsx"
]
}
```
3. 在 `vue.config.js` 文件中添加以下内容:
```
module.exports = {
chainWebpack: config => {
config.module
.rule('jsx')
.test(/\.jsx$/)
.use('babel-loader')
.loader('babel-loader')
.tap(options => {
// 修改官方 preset 的配置,使其支持 Vue 2
options.presets[1][1].pragma = 'createElement'
return options
})
}
}
```
4. 在组件中使用 `import { createElement } from 'vue';` 来代替 `React.createElement`。
```
<template>
<div>
{createElement('h1', { class: 'title' }, 'Hello World')}
</div>
</template>
<script>
import { createElement } from 'vue';
export default {
name: 'MyComponent',
render() {
return (
<div>
{createElement('h1', { class: 'title' }, 'Hello World')}
</div>
);
}
}
</script>
```
通过以上步骤,你的 Vue 2 + JSX 项目应该就能够正常运行了。
阅读全文