vue 混入 Mixin

可以在多個組件間橫向復用代碼,一個混入對象可以包含任意組件選項。當組件使用混入對象時,所有混入對象的選項將被“混合”進入該組件本身的選項。
混入和組件data中數據,方法、計算屬性等合并,重名的就用組件的覆蓋混入對象的,生命周期的鉤子,都會執行,不會覆蓋。
組件可以時訪問混入數據,選項,反之
示例:

<div id="app">
    <!-- 使用組件 -->
    <my-component></my-component>
</div>
<!-- 組件模板 子組件-->
<template id="mycomponent">
    <div>
        {{ msg }}
        <button @click="getInfo">點擊執行混入方法</button>
    </div>
</template>
<script>
    // 定義混入對象
    let mixin = {
        data(){
           return {
               msg:"混入"
            }
        },
        methods:{
            getInfo(){
                console.log("混入方法")
            }
        }
    }

    // 子組件選項對象
    let MyComponent = {
        mixins:[mixin],//將混入對象里的內容添加到當前組件中去,混入對象可以引用幾乎任何Vue組件所能引用的東西
        template: `#mycomponent`,
        data(){
            return{
               counter:0
            } 
        },
        methods:{}
    };

    //  實例中注冊組件
    const vm = new Vue({
        el:"#app",
        data:{},
        components: {
            MyComponent
        }
    })
</script>

顯示結果:


image.png

Vue已經自動將混入對象里的內容添加到組件中去了, 或者可以說是混入到組件內了,
混入對象可以引用幾乎任何Vue組件所能引用的東西, 就好像他是組件本身的一部分

  1. 混入對象與組件的選項合并
    如果混入對象和組件間有重復的選項,如果重名的方法或者都有同一個生命周期的鉤子函數,根據他們的類型,Vue會區別對待
    2.1 數據對象合并
    數據對象在內部會進行遞歸合并,并在發生沖突時以組件數據優先。
    示例代碼如下:
<script>
    // 定義混入對象
    let mixin = {
        data() {
            return {
                message: 'hello',
                foo: 'abc'
            }
        }
    }

    //  組件選項對象
    let MyComponent = {
        mixins: [mixin],
        template:"<div></div>",
        data() {
            return {
                message: 'goodbye',
                bar: 'def'
            }
        },
        created(){
            console.log(this.$data)
            //  => { message: "goodbye", foo: "abc", bar: "def" }
        }

    };

    //  實例中注冊組件
    const vm = new Vue({
        el: "#app",
        data: {},
        components: {
            MyComponent
        }
    })
</script>
image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. 前言 本節介紹混入 (mixin) 的使用方法。包括什么是 mixin,如何定義 mixin,mixin 重...
    木子教程閱讀 340評論 0 1
  • Vue.mixin 混入 (mixin) 提供了一種非常靈活的方式,來分發 Vue 組件中的可復用功能。一個混入對...
    HTAO濤閱讀 533評論 0 4
  • Vue之混入mixins(非完整版) 一、mixins基礎介紹(不使用cli版本) 1.首先我們看一下vue官網對...
    差一點沒吃西瓜閱讀 419評論 0 1
  • 理解:一個混入對象可以包含任意組件選項,這些選項將混入到組件本身的選項;作用:用來分發Vue組件中的可服用功能; ...
    金剛狼_3e31閱讀 338評論 0 0
  • 混入(mixin)提供了一種非常靈活的方式,來分發vue組件中的可復用功能。一個混入對象可以包含任意組件選項。當組...
    小鐵匠閱讀 1,376評論 0 1