Vite 创建的 React 项目里怎么用 Vue 组件?
我用 Vite 初始化了一个 React 项目,但因为历史原因需要临时引入一个 Vue 单文件组件。试了直接 import 报错说不支持 .vue 文件,是不是得额外装插件?
我看到有些方案说要用 @vitejs/plugin-vue,但不确定在 React 项目里能不能混用。下面是我尝试引入的 Vue 组件代码:
<template>
<div>Hello from Vue!</div>
</template>
<script>
export default {
name: 'TestComponent'
}
</script>
首先需要安装必要的依赖:
然后在vite.config.js里做这样的修改:
接下来要创建一个Vue组件的wrapper,因为在React里不能直接使用Vue组件。新建一个VueWrapper.jsx:
最后在React组件里这样使用:
注意几个关键点:
1. 需要同时启用react和vue插件,它们是可以共存的
2. 必须用vue/dist/vue.esm-bundler这个版本
3. 需要通过ref手动挂载Vue组件
4. 记得给.vue文件添加正确的文件类型处理
这方案稍微有点hack,但确实能解决问题。如果只是临时需求可以这么用,长期项目还是建议重构掉这种混合方案。
核心步骤就这几步:
先装依赖,
npm install vue @vitejs/plugin-vue,这两个都得装。然后改
vite.config.js,把 vue 插件加进去:到这里 .vue 文件就能正常 import 了,但还有个问题:React 和 Vue 的渲染机制不一样,不能直接当 React 组件用。
一般这样处理,在 React 组件里挂一个 div 当容器,用 useEffect 把 Vue 组件挂载上去:
这样就能跑起来了。不过说实话,这种混用方式维护起来挺痛苦的,能迁移就尽早迁移吧,两套生态混在一起久了全是坑。