最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue混入mixin的介紹及理解

 更新時(shí)間:2022年08月05日 10:02:43   作者:飯啊飯°  
混入(mixin)提供了一種非常靈活的方式,來(lái)分發(fā)vue組件中的可復(fù)用功能。一個(gè)混入對(duì)象可以包含任意組件選項(xiàng)。當(dāng)組件使用混入對(duì)象時(shí),所有混入對(duì)象的選項(xiàng)將被“混合”進(jìn)入該組件本身的選項(xiàng)

一、mixin是什么

mixin是面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言中的類(lèi),提供了方法的實(shí)現(xiàn)。其他類(lèi)可以訪問(wèn)mixin類(lèi)的方法而不必成為其子類(lèi);

mixin類(lèi)通常作為功能模塊使用,在需要該功能時(shí)“混入”,有利于代碼復(fù)用又避免了多繼承的復(fù)雜。

本質(zhì)就是一個(gè)JS對(duì)象,可以包含組件中的任意功能選項(xiàng),如data、components、methods、creaded、computed以及生命周期函數(shù)等等。

只需要將共用的功能以對(duì)象的方式傳入mixins選項(xiàng)中,當(dāng)組件使用mixins對(duì)象時(shí)所有mixins對(duì)象的對(duì)象都將被混入該組件本身的選項(xiàng)中來(lái)。

局部混入

import mixin1 from './mixin1'
export default {
    // mixins:[mixin1]
}

全局混入

Vue.mixin({
  created: function () {
      console.log("全局混入")
    }
})

注意:當(dāng)組件存在與mixin對(duì)象相同的選項(xiàng)的時(shí)候,進(jìn)行遞歸合并的時(shí)候組件的選項(xiàng)會(huì)覆蓋mixin的選項(xiàng);但是如果相同的選項(xiàng)為生命周期鉤子的時(shí)候,會(huì)合并成一個(gè)數(shù)組,先執(zhí)行mixin的鉤子,再執(zhí)行組件的鉤子。

二、使用場(chǎng)景

在開(kāi)發(fā)中,經(jīng)常會(huì)遇到在不同的組件中用到相同或者相似的代碼,這些代碼的功能相對(duì)獨(dú)立;

例子

控制元素是否顯示,都會(huì)使用v-show,如果兩個(gè)組件中使用的變量和規(guī)則都相同,就可以把控制元素顯示單獨(dú)封裝成一個(gè)mixin.js文件。

modal.vue中

<template>
  <div id="app">
    <button @click="show()">modal顯示與隱藏</button>
    <div v-show="isShowing">modal顯示</div>
  </div>
</template>
<script>
import mixin1 from './mixin1'
export default {
    mixins:[mixin1]
}
</script>

tooltip中

<template>
  <div id="app">
    <button @click="show()">tooltip顯示與隱藏</button>
    <div v-show="isShowing">tooltip顯示</div>
  </div>
</template>
<script>
import mixin1 from './mixin1'
export default {
    mixins:[mixin1],
}
</script>

mixin1.js中

export default {
    data() {
        return {
            isShowing:true
        }
    },
    methods: {
        show() { 
            this.isShowing = !this.isShowing
        }
    },
}

三、原理分析

  • 優(yōu)先遞歸處理mixins;
  • 先遍歷合并parent中的key,調(diào)用mergeField方法進(jìn)行合并,然后保存在變量options;
  • 再遍歷child,合并補(bǔ)上parent中沒(méi)有的key,調(diào)用mergeField方法進(jìn)行合并,保存在變量options;
  • 通過(guò)mergeField函數(shù)進(jìn)行合并;
  • 合并策略包括:替換型、合并型、隊(duì)列型、疊加型;
  • 替換行策略有:props、methods、inject、computed;
  • 合并型策略是data,通過(guò)set方法進(jìn)行合并和重新賦值,就是將新的同名參數(shù)替代舊的參數(shù);
  • 隊(duì)列型策略有生命周期函數(shù)和watch,原理是將函數(shù)存入一個(gè)數(shù)據(jù),然后正序遍歷依次執(zhí)行。
  • 疊加型有component、directives、filters,通過(guò)原型鏈進(jìn)行層層的疊加。

四、mixin的理解

回答:mixin是一種類(lèi),在vue中就是js文件,主要的作用是作為功能模塊引用。因?yàn)樵陧?xiàng)目中,可能不同組件會(huì)有相同的功能,比如控制元素的顯示和隱藏,如果他們的變量和規(guī)則也完全相同的話,就可以把這個(gè)功能單獨(dú)提取出來(lái),放在mixin.js中,再引入,就可以實(shí)現(xiàn)一樣的功能了。引入的方法也分為全局混入和局部混入,局部混入就是在每個(gè)組件中引入,全局混入就是在main.js中通過(guò)Vue.mixin()引入。

到此這篇關(guān)于vue混入mixin的介紹及理解的文章就介紹到這了,更多相關(guān)vue mixin內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用vue-cli(vue腳手架)快速搭建項(xiàng)目的方法

    使用vue-cli(vue腳手架)快速搭建項(xiàng)目的方法

    本篇文章主要介紹了使用vue-cli(vue腳手架)快速搭建項(xiàng)目的方法,vue-cli 是一個(gè)官方發(fā)布 vue.js 項(xiàng)目腳手架,使用 vue-cli 可以快速創(chuàng)建 vue 項(xiàng)目,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Vue六大基本類(lèi)型中的原始值響應(yīng)式

    Vue六大基本類(lèi)型中的原始值響應(yīng)式

    原始值指的是 Boolean、Number、BigInt、String、Symbol、undefined、null 等類(lèi)型的值,在 JavaScript 中,原始值是按值傳遞的,引用類(lèi)型是按引用傳遞的,這意味著,如果一個(gè)函數(shù)接收了一個(gè)原始值作為參數(shù),那么形參和實(shí)參之間是沒(méi)有引用關(guān)系的,它們是完全獨(dú)立的兩個(gè)值
    2023-01-01
  • vue3 實(shí)現(xiàn)牙位圖選擇器的實(shí)例代碼

    vue3 實(shí)現(xiàn)牙位圖選擇器的實(shí)例代碼

    這篇文章主要介紹了vue3 實(shí)現(xiàn)牙位圖選擇器的實(shí)例代碼,代碼簡(jiǎn)單易懂,需要的朋友參考下吧
    2025-04-04
  • Vue綁定對(duì)象與數(shù)組變量更改后無(wú)法渲染問(wèn)題解決

    Vue綁定對(duì)象與數(shù)組變量更改后無(wú)法渲染問(wèn)題解決

    這篇文章主要介紹了Vue綁定對(duì)象與數(shù)組變量更改后無(wú)法渲染問(wèn)題解決,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • vue省市區(qū)三聯(lián)動(dòng)下拉選擇組件的實(shí)現(xiàn)

    vue省市區(qū)三聯(lián)動(dòng)下拉選擇組件的實(shí)現(xiàn)

    本篇文章主要介紹了vue省市區(qū)三聯(lián)動(dòng)下拉選擇組件的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • watch(監(jiān)視屬性)和computed(計(jì)算屬性)的區(qū)別及實(shí)現(xiàn)案例

    watch(監(jiān)視屬性)和computed(計(jì)算屬性)的區(qū)別及實(shí)現(xiàn)案例

    watch和computed是vue實(shí)例對(duì)象中的兩個(gè)重要屬性,watch是監(jiān)視屬性,用來(lái)監(jiān)視vue實(shí)例對(duì)象上屬性和方法的變化,computed被稱(chēng)為計(jì)算屬性,可以將data對(duì)象中的屬性進(jìn)行計(jì)算得到新的屬性,這篇文章主要介紹了watch(監(jiān)視屬性)和computed(計(jì)算屬性)的區(qū)別,需要的朋友可以參考下
    2023-05-05
  • vue-cli 3.x 修改dist路徑的方法

    vue-cli 3.x 修改dist路徑的方法

    今天小編就為大家分享一篇vue-cli 3.x 修改dist路徑的方法,具有很好的參考價(jià)值。希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vue?scoped與深度選擇器deep的原理分析

    vue?scoped與深度選擇器deep的原理分析

    這篇文章主要介紹了vue?scoped與深度選擇器deep的原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue forEach循環(huán)數(shù)組拿到自己想要的數(shù)據(jù)方法

    vue forEach循環(huán)數(shù)組拿到自己想要的數(shù)據(jù)方法

    今天小編就為大家分享一篇vue forEach循環(huán)數(shù)組拿到自己想要的數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vue+express+jwt持久化登錄的方法

    vue+express+jwt持久化登錄的方法

    這篇文章主要介紹了vue+express+jwt持久化登錄的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06

最新評(píng)論

综艺| 九台市| 永吉县| 陈巴尔虎旗| 资溪县| 孟连| 金溪县| 上杭县| 遵义县| 德江县| 增城市| 嘉鱼县| 河津市| 永登县| 电白县| 建平县| 蒙自县| 沭阳县| 武邑县| 始兴县| 专栏| 阳信县| 张家川| 邹城市| 金坛市| 雷波县| 浦东新区| 故城县| 原阳县| 凤庆县| 萍乡市| 彰化县| 颍上县| 桑植县| 夹江县| 喀什市| 左云县| 盘锦市| 太和县| 岱山县| 志丹县|