vue架构如何内嵌react页面
在Vue中内嵌React页面的方法
使用vue-react-wrapper库
安装vue-react-wrapper库,它允许在Vue组件中直接渲染React组件:
npm install vue-react-wrapper
在Vue组件中引入并包装React组件:
import VueReactWrapper from 'vue-react-wrapper';
import ReactComponent from './ReactComponent';
export default {
components: {
ReactComponent: VueReactWrapper(ReactComponent)
}
}
模板中使用:

<react-component :props="someData"></react-component>
通过Web Components桥接
将React组件编译为Web Components后可在Vue中直接使用。使用@react-wc/bridge工具:
npm install @react-wc/bridge
转换React组件:

import { defineCustomElement } from '@react-wc/bridge';
import ReactApp from './ReactApp';
customElements.define('react-app', defineCustomElement(ReactApp));
Vue模板中直接使用自定义元素:
<react-app></react-app>
使用iframe嵌入
对于完全独立的React应用,可通过iframe嵌入:
<iframe
src="http://your-react-app.com"
width="100%"
height="500px"
frameborder="0"
></iframe>
状态共享方案
通过自定义事件或状态管理库实现通信:
// React组件中
window.dispatchEvent(new CustomEvent('react-event', { detail: data }));
// Vue组件中
mounted() {
window.addEventListener('react-event', this.handleReactEvent);
}
注意事项
- 确保React和Vue使用不同版本的React时,通过webpack别名解决冲突:
resolve: { alias: { 'react': path.resolve('./node_modules/react'), 'react-dom': path.resolve('./node_modules/react-dom') } } - 样式隔离需要手动处理,建议使用CSS Modules或Scoped CSS
- 性能监控需特别注意,混合框架可能导致渲染性能下降



