(二十六)Vue之mixin混入/合

Vue学习目录

上一篇:(二十五)Vue之props配置项

下一篇:(二十七)Vue之插件

mixin

在有些业务逻辑中,发现在多个组件的功能业务逻辑一样,可以把多个组件共用的配置提取成一个混入对象,通过配置将这些混入对象配置进组件里,这些混入将会被合并到最终的选项中。

注意:

  • 1.当混入对象和组件选项的属性名一样时,以组件的data配置为主
  • 2.当混入包含一个生命周期钩子,而创建组件本身也有一个,那么两个生命周期钩子函数都会被调用。

局部混入

通过mixins配置项以数组的形式配置
提取的混入对象mixin.js:

export const mixin = {
    methods:{
        showName(){
            alert(this.name)
        }
    },
    mounted() {
        console.log('666')
    }
}
export const mixin2 = {
    data(){
        return{
            x:100,
            y:200
        }
    }
}

School组件:

<template>
  <div>
    <h2 @click="showName">学校名称:{{name}}</h2>
    <h2>学校地址:{{address}}</h2>
  </div>
</template>

<script>
  import {mixin} from "@/mixin";
  export default {
    name:'School',
    data(){
      return {
        name:'一中',
        address:'广州'
      }
    },
    mixins:[mixin]
  }
</script>

Student组件:

<template>
  <div>
    <h2 @click="showName">学生姓名:{{name}}</h2>
    <h2>学生性别:{{sex}}</h2>
    <h2>x为:{{x}},y为:{{y}}</h2>
  </div>
</template>

<script>
import {mixin, mixin2} from "@/mixin";
  export default {
    name:'Student',
    data(){
      return {
        name:'张三',
        sex:'男',
        x:1000
      }
    },
    mounted() {
      console.log('888')
    },
    mixins:[mixin,mixin2]
  }
</script>

效果:x的属性名相同以组件的x为主,生命周期钩子都会调用
在这里插入图片描述

在这里插入图片描述

全局混入

使用Vue.mixin()配置,这种配置全局注册一个混入,影响注册之后所有创建的每个 Vue 实例。
mian.js配置:

import {mixin, mixin2} from "./mixin";
Vue.mixin(mixin)
Vue.mixin(mixin2)

效果:同样是x的属性名相同以组件为主,影响注册之后所有创建的每个 Vue 实例,Student组件、School组件、App组件及Vue实例,所以输出4个666,并且通过vue开发者工具我们都能发现每个实例都有数据x和y
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忆亦何为

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值