• 技术文章 >web前端 >js教程

    react项目中如何运行vue组件?方法介绍

    青灯夜游青灯夜游2022-04-11 20:51:28转载809
    react项目中如何运行vue组件?下面本篇文章就通过示例给大家介绍一下在react项目中运行vue组件的方法,希望对大家有所帮助!

    此文的背景源于面试中,被问到,vue和react组件假如需要互通和复用,如何优雅的实现?

    除了,开发者手动转代码外。目前,我能想到的就2种解决方案

    【相关推荐:Redis视频教程vuejs教程

    先看实现效果

    1.png

    vue组件在reat中正常渲染了,并且我还点击了按钮 3下vue的响应和render也都正常

    具体如何实现?

    实现原理

    import Vue from 'vue/dist/vue.min.js' // 引入完整版,否则不能解析vue的组件对象语法
    export default class App extends Component {
      constructor(props) {
        super(props)
      }
      
      componentDidMount() {
        const Foo = {
          template: `
            <div>
              <h1>我是vue : {{aaa}}</h1>
              <h1>我是vue : {{aaa}}</h1>
              <h1>我是vue : {{aaa}}</h1>
              <button @click="aaa++">按钮</button>
            </div>
          `,
          data () {
            return {
              aaa: 2222
            }
          }
        }
        new Vue({
          render: h => h(Foo),
        }).$mount('#vueApp')
      }
    
      render() {
        return (
          <div>
            <h1>当前是react项目内</h1>
            <h1>当前是react项目内</h1>
            以下将渲染vue组件
            <div id="vueApp" />
          </div>
        )
      }
    }

    注意:

    如果只需支持vue的组件选项对象的话,那么不用配置webpack,就完了

    vue的组件选项对象 指的是:

    const Foo = { 
        template: ` 
            <div> 
                <h1>我是vue : {{aaa}}</h1>
                <h1>我是vue : {{aaa}}</h1> 
                <h1>我是vue : {{aaa}}</h1> 
                <button @click="aaa++">按钮</button> 
            </div> 
        `, 
        data () { 
            return { 
                aaa: 2222 
            } 
        } 
    }

    高级版

    此处高级版指的是:需要支持 .vue文件/组件(上面的demo,直接是组件选项对象,没有.vue文件)

    比如:(继续用上面的demo,改几行)

    import Vue from 'vue/dist/vue.min.js' // 引入完整版,否则不能解析vue的组件对象语法
    import Foo from "./Foo.vue";
    export default class App extends Component {
      ...
      
      componentDidMount() {
        new Vue({
          render: h => h(Foo),
        }).$mount('#vueApp')
      }
    
      ...
    }

    此时要想生效,需要配置vue-loader

    // 在 webpack.config.js 内
    const { VueLoaderPlugin } = require('vue-loader')
    
    module.exports = {
      mode: 'development',
      module: {
        rules: [
          {
            test: /.vue$/,
            loader: 'vue-loader'
          }
        ]
      },
      plugins: [
        // make sure to include the plugin for the magic
        new VueLoaderPlugin()
      ]
    }

    注意点

    总结

    最终在对比一下,vue项目中使用react组件,和, react项目中使用vue组件,配置上的区别!


    一定需要配置webpack.config.js的loader吗?
    在vue项目中使用react组件yes,需配置babel-loader编译.jsx文件,需要额外注意配babel-loader的option选项
    在react项目中使用vue组件no,如果不用解析.vue文件的话,直接用vue的组件选项对象语法的话,那么不用额外的配置vue-loader。需要支持.vue文件的话,需要配vue-loader

    本文转载自:https://juejin.cn/post/7083303446161391623

    作者:bigtree

    更多编程相关知识,请访问:编程视频!!

    以上就是react项目中如何运行vue组件?方法介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:掘金社区,如有侵犯,请联系admin@php.cn删除
    专题推荐:react vue
    上一篇:深入浅析Nodejs中的net模块 下一篇:总结分享JavaScript变量和数据类型知识点
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• react请求数据用什么钩子• react函数组件比类组件的优势在哪• 浅析React18中的SuspenseList,聊聊有什么用• 浅析react18中的新概念Transition• 聊聊怎么利用Memoization提高React性能
    1/1

    PHP中文网