zoukankan      html  css  js  c++  java
  • vue中mixin的理解与用法

    vue中提供了一种混合机制--mixins,用来更高效的实现组件内容的复用。最开始我一度认为这个和组件好像没啥区别。。后来发现错了。下面我们来看看mixins和普通情况下引入组件有什么区别?

    组件在引用之后相当于在父组件内开辟了一块单独的空间,来根据父组件props过来的值进行相应的操作,单本质上两者还是泾渭分明,相对独立。

    而mixins则是在引入组件之后,则是将组件内部的内容如data等方法、method等属性与父组件相应内容进行合并。相当于在引入后,父组件的各种属性方法都被扩充了。

     单纯组件引用:

              父组件 + 子组件 >>> 父组件 + 子组件

         mixins:

              父组件 + 子组件 >>> new父组件

    作用:多个组件可以共享数据和方法,在使用mixin的组件中引入后,mixin中的方法和属性也就并入到该组件中,可以直接使用。钩子函数会两个都被调用,mixin中的钩子首先执行。

    先看一下简单的使用方法:

    建立一个mixin.js

    export default {
        data() {
         return {
          mixinName: 'mixin'
         }
        },
        created() {
         console.log('mixin...', this.mixinName);
        },
        mounted() {},
        methods: {}
    }

    在vue文件中使用mixin

    import mixin from '@/mixin'; // 引入mixin文件
    export default {
     mixins: [mixin]
    }

    发现,mixin.js里的代码执行了,而且先于父组件同钩子函数内的方法先执行!!!

    注意,mixin中的方法名重复的话,会以父组件的方法为主,这个重复可以自己来避免。

    上诉是简单的mixin的使用,稍微复杂点的可以,将mixin分块

    例如,我们可以建立一个文件夹,名叫mixins

     里边的没一个js文件就是一个mixin块儿,这样可以让模块更清晰

    在父组件内引入:

    import resize from '@/mixins/resize'
    
    export default {
      mixins: [resize],
    }

    当然,上诉只有一个resize模块,如果有多个的话在数组内写上就可以了

    感觉mixin有很大的好处,我们可以将代码分隔的更加清晰,复用性将更加好!!

  • 相关阅读:
    设计模式实战应用之五:工厂方法模式
    Codeforces445A_DZY Loves Chessboard(预处理)
    void f(int(&p)[3]){} 和void f(int(*p)[3]){}的差别
    《linux 内核全然剖析》 mktime.c
    Java中对象、对象引用、堆、栈、值传递以及引用传递的详解
    android 仿ios开关控件
    ViewDragHelper实战 自己打造Drawerlayout
    [javase学习笔记]-8.5 statickeyword的使用场景
    玩转图片Base64编码
    Android stuido viewpagerindicator的使用
  • 原文地址:https://www.cnblogs.com/fqh123/p/11221775.html
Copyright © 2011-2022 走看看