Vue中的mixin语法

1.mixin语法

 mixin就是在组件中混入数据的语法

  •     mixin 混入 组件里没有数据的时候会使用混入的数据
  •     组件data优先级 高于 mixin data优先级
  •     如果是生命周期函数 先执行mixin里面的 再执行组件里面的
  •      methods里面的情况和data里面的情况一样

2.局部mixin

 


const app = Vue.createApp({
      data() {
        return {
          number: 1,
          count: 2,
        };
      },
      created() {
        console.log("created");
      },
      //局部的mixin需要用这种语法引入
      mixins: [myMixin],
      methods: {
        handleClick() {
          console.log("handleClick");
        },
      },
      template: `
            <div>
                <div>{{number}}</div>
                <child/>
                <button @click="handleClick">增加</button>
            </div>
        `,
    });
// 局部的mixin
   const myMixin = {
       data() {
         return { number: 2 };
       },
       created() {
         console.log("mixin created");
       },
       methods: {
         handleClick() {
           console.log("mixin handleClick");
         },
       },
    };

3.全局mixin

全局mixin所有的组件都能使用,而且不用注册 

 

const app = Vue.createApp({
      data() {
        return {
          number: 1,
          count: 2,
        };
      },
      created() {
        console.log("created");
      },
      //   mixins: [myMixin],
      methods: {
        handleClick() {
          console.log("handleClick");
        },
      },
      template: `
            <div>
                // 可以在这里使用mixin里面的数据 因为是全局的所以不用注册
                <div>{{number}}</div>
                <child/>
                <button @click="handleClick">增加</button>
            </div>
        `,
    });
    //全局的mixin
    app.mixin({
      data() {
        return { number: 2 };
      },
      created() {
        console.log("mixin created");
      },
      methods: {
        handleClick() {
          console.log("mixin handleClick");
        },
      },
    });

4.在mixin里面使用自定义属性

自定义属性就是和methods,data,生命周期函数这些在同一层级的数据变量 

 自定义属性 组件中的属性的优先级高于 mixin自定义属性的优先级

const myMixin = {
      number: 23,
    };

    const app = Vue.createApp({
      number: 11,
      mixins: [myMixin],
      template: `
            <div>
                <div>{{this.$options.number}}</div>
                <button @click="handleClick">增加</button>
            </div>
        `,
    });

 5.自己设置优先级

 

//设置mixin的优先级高于组件的优先级 
app.config.optionMergeStrategies.number = (mixinVal, appVal) => {
      return mixinVal || appVal;
    };

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值