当前位置:首页 > React

vue页面如何嵌套react里

2026-01-26 00:19:18React

在Vue中嵌套React组件

使用vuera库实现Vue和React组件的互操作。安装依赖后,通过<react-component>标签或wrapper函数在Vue模板中直接渲染React组件。

npm install vuera
<template>
  <react-component :component="ReactComponent" :message="vueData"/>
</template>

<script>
import { ReactWrapper } from 'vuera'
import ReactComponent from './ReactComponent.jsx'

export default {
  components: { 'react-component': ReactWrapper },
  data() {
    return { ReactComponent, vueData: 'Hello from Vue' }
  }
}
</script>

在React中嵌套Vue组件

通过vue-react-wrapper实现反向嵌套。将Vue组件编译为独立模块后,使用React的createElement方法进行渲染。

npm install vue-react-wrapper
import VueComponent from './VueComponent.vue'
import { createElement } from 'vue-react-wrapper'

function ReactParent() {
  return (
    <div>
      {createElement(VueComponent, { vueProp: 'data from React' })}
    </div>
  )
}

共享状态管理方案

采用Redux或Vuex进行跨框架状态共享。创建中央存储库后,两个框架的组件均可订阅相同状态。

// store.js
import { createStore } from 'redux'
const store = createStore(reducer)
export default store

// Vue组件
import store from './store'
computed: {
  sharedState() {
    return store.getState()
  }
}

// React组件
import { useSelector } from 'react-redux'
const state = useSelector(state => state)

构建配置调整

修改webpack配置以支持混合编译。需同时配置Vue和React的loader,并确保正确处理.vue.jsx文件扩展名。

// webpack.config.js
module: {
  rules: [
    {
      test: /\.vue$/,
      loader: 'vue-loader'
    },
    {
      test: /\.jsx?$/,
      loader: 'babel-loader',
      options: {
        presets: ['@babel/preset-react']
      }
    }
  ]
}

事件通信机制

建立自定义事件系统实现跨框架通信。使用EventEmitter或浏览器原生CustomEvent进行组件间消息传递。

// eventBus.js
import EventEmitter from 'events'
export default new EventEmitter()

// Vue组件
eventBus.emit('update', data)

// React组件
useEffect(() => {
  eventBus.on('update', handler)
  return () => eventBus.off('update', handler)
}, [])

样式隔离方案

采用CSS Modules或Scoped CSS避免样式冲突。为每个框架组件添加独立作用域标识,确保样式不会相互污染。

<template>
  <div class="vue-container">
    <react-component class="react-wrapper"/>
  </div>
</template>

<style scoped>
.vue-container {
  /* 仅作用于Vue组件 */
}
</style>
import styles from './ReactComponent.module.css'
function ReactComponent() {
  return <div className={styles.reactContainer}></div>
}

vue页面如何嵌套react里

标签: 嵌套页面
分享给朋友:

相关文章

js实现页面跳转

js实现页面跳转

使用 window.location.href 通过修改 window.location.href 属性实现页面跳转: window.location.href = 'https://example…

h5实现页面跳转页面

h5实现页面跳转页面

H5 实现页面跳转的方法 在 H5(HTML5)中,实现页面跳转可以通过多种方式完成,以下是常见的几种方法: 使用 <a> 标签 通过 HTML 的 <a> 标签实现页面跳转…

uniapp前端页面

uniapp前端页面

Uniapp 前端页面开发指南 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端部署(H5、小程序、App等)。以下是开发 Uniapp 前端页面的关键方法和注意事项。…

vue实现引导页面

vue实现引导页面

实现引导页面的方法 在Vue中实现引导页面通常需要结合用户交互和页面跳转逻辑,以下是几种常见的实现方式: 使用路由守卫控制访问权限 在router.js中配置全局前置守卫,检查用户是否首次访问:…

vue 实现页面注册

vue 实现页面注册

Vue 实现页面注册功能 在 Vue 中实现用户注册功能通常需要以下步骤: 创建注册表单组件 使用 Vue 的单文件组件结构创建一个注册表单,包含必要的输入字段如用户名、邮箱、密码等。 <t…

vue实现页面切换

vue实现页面切换

Vue 实现页面切换的方法 Vue 中实现页面切换通常使用 Vue Router,这是 Vue.js 官方的路由管理器。以下是几种常见的实现方式: 使用 Vue Router 的基本配置 安装 Vu…