Vue中Mixin&extends的详细使用教程

 更新时间:2022年02月23日 10:58:08   作者:uu盘  
vue提供了mixin、extends配置项,最近使用中发现很好用,下面这篇文章主要给大家介绍了关于Vue中Mixin&extends的详细使用方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

认识Mixin

目前我们使用组件化开发方式来开发应用程序,但是在不同组件之间存在一些相同的代码逻辑,此时我们希望对相同的代码逻辑进行抽取。

在vue2和vue3中都支持使用Mixin来解决,Mixin提供了一种非常灵活的方式,来分发Vue组件中的可复用功能,一个Mixin对象可以包含任何组件选项,当组件使用Mixin对象时,所有Mixin对象的选项将被 混合 进入该组件本身的选项中。

官方定义Mixin

Mixin 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个 mixin 对象可以包含任意组件选项。当组件使用 mixin 对象时,所有 mixin 对象的选项将被“混合”进入该组件本身的选项。

项目中如何使用Mixin

在src文件夹下创建一个mixins文件夹

在demomixins.js文件下

export default {
    data() {
        return {
            msg:'mixins 中的data'
        }
    },
    mounted() {
        console.log('mixins 中的mounted');
    },
    methods:{
        foo() {
            console.log('mixins 中的methods');
        }
    },
    computed:{
        message() {
            return 'mixin 中的computed'
        }
    }
}

在Home.vue文件下

<template>
    <div class='home'>
        {{msg}}<br>
        {{message}}<br>
        <button @click="foo">点击按钮</button>
    </div>
</template>

<script>
// 导入js文件
import demomixins from '@/mixins/demomixins.js'
export default {
    name:'Home',
    data() {
        return {
        };
    },
    mixins:[demomixins],	// 混入demomixins对象
    mounted() {
    },
    methods: {},
    components:{},
};
</script>

虽然我们没有在home.vue中定义msg变量、message计算属性、foo方法,但是页面中可以显示。

Mixin的合并规则

如果Mixin对象中的选项和组件对象中的选项发生了冲突,那么Vue会如何操作呢?

<template>
    <div class='home'>
        {{msg}}<br>
        {{message}}<br>
        <button @click="foo">点击按钮</button>
    </div>
</template>

<script>
// 导入
import demomixins from '@/mixins/demomixins.js'
export default {
    name:'Home',
    data() {
        return {
            msg:'home 中的data'
        };
    },
    mixins:[demomixins],
    mounted() {
        console.log('home 中的mounted');
    },
    methods:{
        foo() {
            console.log('home 中的methods');
        }
    },
    computed:{
        message() {
            return 'home 中的computed'
        }
    }
};
</script>

以上我们可以看出:

混入的对象中的msg属性,和组件的msg属性冲突,以组件的值优先。组件中没有的属性,混入对象中的生效。

同名钩子函数将会合并成一个数组,都会调用,混入函数先调用

值为对象的选项,如methods,computed等,将会合并为一个新对象,如果键名冲突,组件的值优先

全局混入Mixin

如果组件中的某些选项,是所有的组件都需要拥有的,那么这个时候我们可以使用全局的mixin。一旦注册,那么全局混入的选项将会影响每一个组件

const app = createApp(App)
app.mixin({
    data() {
        return {
            msg:'global 中的data'
        }
    },
})

官方定义extends

允许一个组件扩展到另一个组件,且继承该组件选项。

extends类似于mixin,相当于继承,但是只是继承options Api中的内容,不继承template模板。

项目中使用extends

在components创建一个组件my.vue

<script>
export default {
    data() {
        return {
            msg:'uu盘'
        };
    }
};
</script>

在Home.vue文件下

<template>
    <div class='home'>
        {{msg}}
    </div>
</template>

<script>
// 导入
import my from '@/components/my'
export default {
    name:'Home',
    extends:my,
    data() {
        return {
            
        };
    },
};
</script>

在开发中extends用的非常少,在Vue2中比较推荐大家使用Mixin,而在Vue3中推荐使用Composition API。

总结

到此这篇关于Vue中Mixin&amp;extends详细使用的文章就介绍到这了,更多相关Vue中Mixin&amp;extends使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue.js+element-ui的基础表单实例代码

    vue.js+element-ui的基础表单实例代码

    这篇文章主要介绍了vue.js+element-ui的基础表单实例代码,技术栈即html+vue.js+element-ui,而使用它们的方法也很简单,引入对应的js和css文件即可,需要的朋友可以参考下
    2024-03-03
  • 一键将Word文档转成Vue组件mammoth的应用详解

    一键将Word文档转成Vue组件mammoth的应用详解

    这篇文章主要为大家介绍了一键将Word文档转成Vue组件mammoth的应用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Vue实现弹出框点击空白页弹框消失效果

    Vue实现弹出框点击空白页弹框消失效果

    这篇文章主要介绍了VUE实现弹出框点击空白页弹框消失,实现方法可以在Vue中实现弹出框然后通过点击空白页面来让弹窗隐藏,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • vue3监听resize窗口事件(离开页面要销毁窗口事件)

    vue3监听resize窗口事件(离开页面要销毁窗口事件)

    这篇文章主要给大家介绍了关于vue3监听resize窗口事件(离开页面要销毁窗口事件)的相关资料,vue是单页面应用,路由切换后,定时器并不会自动关闭,需要手动清除,当页面被销毁时,清除定时器即可,需要的朋友可以参考下
    2023-11-11
  • vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)

    vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)

    这篇文章主要介绍了vue-video-player 解决微信自动全屏播放问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • vue.js项目使用原生js实现移动端的轮播图

    vue.js项目使用原生js实现移动端的轮播图

    这篇文章主要为大家介绍了vue.js项目中使用原生js实现移动端的轮播图,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • Vue多环境代理配置方法思路详解

    Vue多环境代理配置方法思路详解

    多人协作模式下,修改代理比较麻烦,而且很容易某个开发人员会修改了vue.config.js文件后提交了。接下来通过本文给大家分享Vue多环境代理配置方法思路详解,需要的朋友可以参考下
    2019-06-06
  • 浅析vue侦测数据的变化之基本实现

    浅析vue侦测数据的变化之基本实现

    这里涉及到Vue一个重要特性:响应式系统。数据模型只是普通的 JavaScript对象,当我们修改时,视图会被更新,而变化侦测是响应式系统的核心
    2021-06-06
  • Vue 3开发中VueUse强大Hooks库

    Vue 3开发中VueUse强大Hooks库

    VueUse提供了一个丰富且强大的Hooks库,可以帮助开发者快速实现各种功能,提高开发效率,本文来详细的介绍一下,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)

    Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)

    下面小编就为大家带来一篇Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09

最新评论