Mixin的使用

在组件化开发中,难免会有部分组件内部的部分逻辑是相同的,为了方便减少代码量,vue提供了混入(Mixin)的功能。

局部混入:

首先需要抽取要混入的内容,单独的放到某一个文件,通过导出的方式被其他组件引用。

demoMixin.js

export const demoMixin = {
  // 混入导出的文件中  可以书写vue实例下的所有属性   data   methods等等
  data(){
    return {
      msg:'我是通过混入实现的信息!'
    }
  },
  methods:{
    foo(){
      alert('混入实现的方法foo')
    }
  }
}
在需要混入的组件内部,先导入需要混入的对象,通过属性**minxins**来注册:

App.vue

<template>
  <h1>混入实现的消息:{{msg}}</h1>
  <button @click="foo">混入的方法</button>
</template>

<script>
import { demoMixin } from "@/13_Mixin(混入)的基本使用/mixins/demoMixin";

export default {
  name: "App",
  mixins:[demoMixin],// 需要混入的组件内部  通过该属性来接收要混入的信息
}
</script>

<style scoped>

</style>
最终上述代码实现的效果如下:

效果图

全局混入

​ 全局混入主要依靠vue实例app下的mixin方法进行混入,该方法接受一个对象参数;

main.js

import { createApp } from 'vue'
import App from './13_Mixin(混入)的基本使用/App.vue'
import { demoMixin } from "@/13_Mixin(混入)的基本使用/mixins/demoMixin";

createApp(App).mixin({
    ...demoMixin
}).mount('#app')

混入的属性与组件属性冲突时的合并规则

  1. 钩子函数如create等重复时,两者都会保留并在合适的时机触发;
  2. 值为对象(methods、computed等)时,会对内部的属性自动合并,都会被保留;如果内部属性存在重复的情况,则以组件内部的属性为主;
  3. 数据对象data会被自动进行递归合并,存在冲突的属性时以组件内部的属性为主;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值