vue 3.x 中mixin封装公用方法应用方式

 更新时间:2022年05月31日 08:59:52   作者:采药人~陈大仙  
这篇文章主要介绍了vue 3.x 中mixin封装公用方法应用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mixin封装公用方法应用

在src下新建文件装载公用方法:mixin/baseMixin.js

const baseMixin = {
    data() {
        return {
            title: '这个是公用标题'
        }
    },
    methods: {
        onClick() {
            console.log('我被点击了')
        }
    }
}
export default baseMixin;

然后可以在需要调用的组件中调用:src/view/App.vue

<template>
  <div class="baseMixin">
    <h1>
        这个是调用复用标题: {{title}}
        // 渲染:这个是公用标题
       </h1> 
    <h2>
        <button @click="onClick">
            // 打印:我被点击了
            这个是复用方法
           </button>
    </h2>
  </div>
</template>
<script>
import baseMixin from '@/mixin/baseMixin'
    export default {
        mixins: [baseMixin],
        setup() {
            let text = '这个是vue3版本mixin的方法记录'
            return {
                text
            }
        }
    }
</script>

如果需要全局直接使用mixin的封装的话,在main.js里面申明就可以

import { createApp } from 'vue'
import App from './App.vue'
import baseMixin from './mixin/baseMixin'
createApp(App).mixin(baseMixin).mount('#app')

vue3基础-mixin使用

mixin特点

  • 组件 data 优先级 高于 mixin 的data优先级
  • 组件 methods 优先级 高于 mixin 的methods优先级
  • 声明周期函数,先执行 mixin 里面的,再执行组件里面的
  • 局部mixin,需要在组件中注册 mixins: [myMixin]
  • 全局mixin 无需在组件中注册,自动注入。

定义局部mixin

和定义局部组件类似,支持data,methods以及声明周期函数。

mixin.js 

const myMixin = {
  data() {
    return {
      msg: 'hello vue3'
    }
  },
  created() {
    console.log('mixin created');
  },
  methods: {
    handleClick() {
      console.log('mixin', this.msg);
    }
  }
}

定义全局mixin(不推荐)

// 全局mixin 无需在组件中注册,自动注入。
app.mixin({
  mounted() {
    console.log('这是一个全局的mixin');
  }
})

调整mixin中属性的优先级

const myMixin = {
  msg: 'hello mixin ~'
}
// $options 组件注册的所有选项都会在 $options 中
const app = Vue.createApp({
  mixins: [myMixin],
  msg: 'hello app ~',
  template: `
    <div>
      {{ $options.msg }}  
    </div>`,
})
// ** 调整mixin中属性(如:msg)的优先级,使mixin的优先级高级组件的
app.config.optionMergeStrategies.msg = (mixinValue, appValue) => {
  return mixinValue || appValue;
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • 详解Vue的options

    详解Vue的options

    options顾名思义是选项的意思,或称为构造选项。是在创建vue实例时传入的参数,是一个对象。该对象包含哪些属性?每个属性都是什么含义?本篇文章就来带大家详细了解其中的奥秘
    2021-05-05
  • vue中插槽(slot)几种类型的使用方法

    vue中插槽(slot)几种类型的使用方法

    本文主要介绍了vue中插槽(slot)几种类型的使用方法,主要分三种,默认插槽,具名插槽,作用域插槽,下面就来一起介绍一下,感兴趣的可以了解一下
    2024-03-03
  • vue实现学生录入系统之添加删除功能

    vue实现学生录入系统之添加删除功能

    本文给大家带来一个小案例基于vue实现学生录入系统功能,代码简单易懂非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-07-07
  • VUE如何利用vue-print-nb实现打印功能详解

    VUE如何利用vue-print-nb实现打印功能详解

    这篇文章主要给大家介绍了关于VUE如何利用vue-print-nb实现打印功能的相关资料,文中还给大家介绍了vue-print-nb使用中的常见问题,如空白页,需要的朋友可以参考下
    2022-04-04
  • Vue终端取消vue、prettier警告warn问题

    Vue终端取消vue、prettier警告warn问题

    这篇文章主要介绍了Vue终端取消vue、prettier警告warn问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Vue使用Three.js创建交互式3D场景的全过程

    Vue使用Three.js创建交互式3D场景的全过程

    在现代Web开发中,通过在页面中嵌入3D场景,可以为用户提供更加丰富和交互性的体验,Three.js是一款强大的3D JavaScript库,它简化了在浏览器中创建复杂3D场景的过程,本文将介绍如何在Vue中使用Three.js,创建一个简单的交互式3D场景,需要的朋友可以参考下
    2023-11-11
  • Vue状态管理之使用Pinia代替Vuex

    Vue状态管理之使用Pinia代替Vuex

    这篇文章主要介绍了Vue状态管理。下面文章主要围绕着使用Pinia代替Vuex的相关资料展开具体内容,需要的朋友可以参考一下,希望对你有所帮助
    2021-11-11
  • 教你如何在 Nuxt 3 中使用 wavesurfer.js

    教你如何在 Nuxt 3 中使用 wavesurfer.js

    这篇文章主要介绍了如何在 Nuxt 3 中使用 wavesurfer.js,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • vue 项目页面卡死原因排查分析

    vue 项目页面卡死原因排查分析

    这篇文章主要介绍了vue 项目页面卡死原因排查分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue使用微信JS-SDK实现分享功能

    vue使用微信JS-SDK实现分享功能

    这篇文章主要介绍了vue使用微信JS-SDK实现分享功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08

最新评论