当前位置:首页 > 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方法进行渲染。

vue页面如何嵌套react里

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文件扩展名。

vue页面如何嵌套react里

// 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实现页面定位

vue实现页面定位

Vue 实现页面定位的方法 在 Vue 中实现页面定位通常可以通过以下几种方式完成,包括使用原生 JavaScript 的 scrollIntoView 方法、Vue Router 的滚动行为配置,以…

vue实现页面属性修改

vue实现页面属性修改

Vue 实现页面属性修改的方法 Vue 提供了多种方式来动态修改页面属性,包括数据绑定、计算属性、侦听器等。以下是几种常见的方法: 数据绑定 通过 v-bind 指令或简写 : 实现动态绑定 HTM…

h5实现登录页面跳转页面跳转页面

h5实现登录页面跳转页面跳转页面

实现H5登录页面跳转 在H5中实现登录页面跳转可以通过多种方式完成,以下是几种常见方法: 使用window.location.href window.location.href = '目标页面UR…

vue实现的页面

vue实现的页面

以下是基于 Vue.js 实现页面的核心方法和关键步骤,结合现代开发实践整理而成: 环境配置与项目初始化 使用 Vue CLI 或 Vite 创建项目,推荐选择 Vue 3 组合式 API 风格:…

react如何页面跳转

react如何页面跳转

React 页面跳转方法 在 React 中实现页面跳转有多种方式,具体取决于项目使用的路由库(如 React Router)或状态管理工具。以下是常见的几种方法: 使用 React Router…

vue  实现页面返回

vue 实现页面返回

Vue 实现页面返回功能 在Vue中实现页面返回功能,可以通过以下几种方式实现: 使用路由的go方法 通过Vue Router的go方法可以控制页面跳转,传入负数表示后退。 this.$rout…