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

Vue 詳解mixins混入用法大全

 更新時(shí)間:2021年08月26日 11:05:26   作者:netcore_vue  
如果我們?cè)诿總€(gè)組件中去重復(fù)定義這些屬性和方法會(huì)使得項(xiàng)目出現(xiàn)代碼冗余并提高了維護(hù)難度,針對(duì)這種情況官方提供了Mixins特性,這時(shí)使用Vue mixins混入有很大好處,下面就介紹下Vue mixins混入使用方法,需要的朋友參考下吧

前言

當(dāng)我們的項(xiàng)目越來越大,我們會(huì)發(fā)現(xiàn)組件之間可能存在很多相似的功能,你在一遍又一遍的復(fù)制粘貼相同的代碼段(data,method,watch、mounted等),如果我們?cè)诿總€(gè)組件中去重復(fù)定義這些屬性和方法會(huì)使得項(xiàng)目出現(xiàn)代碼冗余并提高了維護(hù)難度,針對(duì)這種情況官方提供了Mixins特性

一、什么是Mixins?

mixins(混入),官方的描述是一種分發(fā) Vue 組件中可復(fù)用功能的非常靈活的方式,mixins是一個(gè)js對(duì)象,它可以包含我們組件中script項(xiàng)中的任意功能選項(xiàng),如data、components、methods 、created、computed等等。我們只要將共用的功能以對(duì)象的方式傳入 mixins選項(xiàng)中,當(dāng)組件使用 mixins對(duì)象時(shí)所有mixins對(duì)象的選項(xiàng)都將被混入該組件本身的選項(xiàng)中來,這樣就可以提高代碼的重用性,使你的代碼保持干凈和易于維護(hù)。

二、什么時(shí)候使用Mixins?

當(dāng)我們存在多個(gè)組件中的數(shù)據(jù)或者功能很相近時(shí),我們就可以利用mixins將公共部分提取出來,通過 mixins封裝的函數(shù),組件調(diào)用他們是不會(huì)改變函數(shù)作用域外部的。

三、如何創(chuàng)建Mixins?

在src目錄下創(chuàng)建一個(gè)mixins文件夾,文件夾下新建一個(gè)myMixins.js文件。前面我們說了mixins是一個(gè)js對(duì)象,所以應(yīng)該以對(duì)象的形式來定義myMixins,在對(duì)象中我們可以和vue組件一樣來定義我們的data、components、methods 、created、computed等屬性,并通過export導(dǎo)出該對(duì)象

四、如何使用Mixins?

在需要調(diào)用的組件中引入myMixins.js文件,然后在export default 中引入你需要的對(duì)象即可

五、Mixins的特點(diǎn)

【5.1】方法和參數(shù)在各組件中不共享,雖然組件調(diào)用了mixins并將其屬性合并到自身組件中來了,但是其屬性只會(huì)被當(dāng)前組件所識(shí)別并不會(huì)被共享,也就是其他組件無法從當(dāng)前組件中獲取到mixins中的數(shù)據(jù)和方法。

①首先我們?cè)诨旌蠈?duì)象myMixins.js中定義一個(gè)age字段和getAge方法

export const myMixins = {
components:{},
data() {
return {
age: 18,
}
},
mounted() {
this.getAge()
},
methods: {
getAge() {
console.log(this.age)
}
}
}

② 組件1中對(duì)num進(jìn)行+1操作

import { myMixins } from "@/mixins/myMixins.js";
export default {
mixins: [myMixins],
data() {
return {}
},
created() {
this.age++
},
}

③組件2不進(jìn)行操作

export default {
mixins: [myMixins],
data() {
return {}
},
}

④我們分別切換到兩個(gè)頁(yè)面,查看控制臺(tái)輸出。會(huì)發(fā)現(xiàn)組件1改變了age里面的值,組件2中age值還是混合對(duì)象的初始值,并沒有隨著組件1的增加而改變

【5.2】引入mixins后組件會(huì)對(duì)其進(jìn)行合并,將mixins中的數(shù)據(jù)和方法拓展到當(dāng)前組件中來,在合并的過程中會(huì)出現(xiàn)沖突,接下來我們?cè)敿?xì)了解Mixins合并沖突

六、Mixins合并沖突

【6.1】值為對(duì)象(components、methods 、computed、data)的選項(xiàng),混入組件時(shí)選項(xiàng)會(huì)被合并,鍵沖突時(shí)優(yōu)先組件,組件中的鍵會(huì)覆蓋混入對(duì)象的

①我們?cè)诨烊雽?duì)象增加age屬性、getAge1方法和getAge2方法

// myMixins.js
export const myMixins = {
components:{},
data() {
return {
age: 18,
}
},
methods: {
getAge1() {
console.log("age1 from mixins =", this.age )
},
getAge2() {
console.log("age2 from mixins =", this.age )
},
}
}

②我們?cè)谝肓薽yMixins文件的組件中,增加age屬性、getAge1方法和getAge3方法

// template.vue
import { myMixins } from "@/mixins/myMixins.js";
export default {
mixins: [myMixins],
data() {
return {
age: 20,
}
},
mounted() {
this.getAge1();
this.getAge2();
this.getAge3();
},
methods: {
getAge1() {
console.log('age1 from template =', this.age)
},
getAge3() {
console.log('age3 from template =', this.age)
},
}
}

③我們會(huì)發(fā)現(xiàn),組件中的age覆蓋了混合對(duì)象的age,組件的getAge1方法覆蓋了混合對(duì)象的getAge1方法

【6.2】值為函數(shù)(created、mounted)的選項(xiàng),混入組件時(shí)選項(xiàng)會(huì)被合并調(diào)用,混合對(duì)象里的鉤子函數(shù)在組件里的鉤子函數(shù)之前調(diào)用

七、與vuex的區(qū)別

vuex:用來做狀態(tài)管理的,里面定義的變量在每個(gè)組件中均可以使用和修改,在任一組件中修改此變量的值之后,其他組件中此變量的值也會(huì)隨之修改。

Mixins:可以定義共用的變量,在每個(gè)組件中使用,引入組件中之后,各個(gè)變量是相互獨(dú)立的,值的修改在組件中不會(huì)相互影響。

八、與公共組件的區(qū)別

組件:在父組件中引入組件,相當(dāng)于在父組件中給出一片獨(dú)立的空間供子組件使用,然后根據(jù)props來傳值,但本質(zhì)上兩者是相對(duì)獨(dú)立的。

Mixins:則是在引入組件之后與組件中的對(duì)象和方法進(jìn)行合并,相當(dāng)于擴(kuò)展了父組件的對(duì)象與方法,可以理解為形成了一個(gè)新的組件。

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

相關(guān)文章

  • vue中清除定時(shí)器的方法實(shí)例詳解

    vue中清除定時(shí)器的方法實(shí)例詳解

    很多情況下,進(jìn)入和退出vue界面,都沒有清除定時(shí)器,從而導(dǎo)致有很多定時(shí)器一起工作,這樣肯定是不行的,下面這篇文章主要給大家介紹了關(guān)于vue中清除定時(shí)器的方法,需要的朋友可以參考下
    2023-02-02
  • 手寫vue無限滾動(dòng)指令的詳細(xì)過程

    手寫vue無限滾動(dòng)指令的詳細(xì)過程

    今天在移動(dòng)端項(xiàng)目中遇見一個(gè)需求,需要數(shù)據(jù)無限滾動(dòng),所以下面這篇文章主要給大家介紹了關(guān)于手寫vue無限滾動(dòng)指令的詳細(xì)過程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Vue?vant使用ImagePreview實(shí)現(xiàn)預(yù)覽圖片

    Vue?vant使用ImagePreview實(shí)現(xiàn)預(yù)覽圖片

    這篇文章主要介紹了Vue?vant使用ImagePreview實(shí)現(xiàn)預(yù)覽圖片,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 詳解Vue組件之作用域插槽

    詳解Vue組件之作用域插槽

    這篇文章主要介紹了Vue組件之作用域插槽,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • vue使用Font Awesome的方法步驟

    vue使用Font Awesome的方法步驟

    這篇文章主要介紹了vue使用Font Awesome的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • vue3+webpack中npm發(fā)布組件的實(shí)現(xiàn)

    vue3+webpack中npm發(fā)布組件的實(shí)現(xiàn)

    本文主要介紹了vue3+webpack中npm發(fā)布組件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • vue同個(gè)按鈕控制展開和折疊同個(gè)事件操作

    vue同個(gè)按鈕控制展開和折疊同個(gè)事件操作

    這篇文章主要介紹了vue同個(gè)按鈕控制展開和折疊同個(gè)事件操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue使用AES.js的步驟詳解

    vue使用AES.js的步驟詳解

    AES對(duì)數(shù)據(jù)傳輸加密、解密處理---AES.js,下面分步驟給大家介紹vue使用AES.js的示例代碼,感興趣的朋友跟隨小編一起看看吧
    2021-10-10
  • vue項(xiàng)目首屏加載過慢的一些解決方案

    vue項(xiàng)目首屏加載過慢的一些解決方案

    最近碰到vue項(xiàng)目打包上線后,第一次打開首頁(yè)后會(huì)出現(xiàn)空白、加載時(shí)間過長(zhǎng)的情況,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目首屏加載過慢的一些解決方案,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • vue中如何動(dòng)態(tài)綁定圖片,vue中通過data返回圖片路徑的方法

    vue中如何動(dòng)態(tài)綁定圖片,vue中通過data返回圖片路徑的方法

    下面小編就為大家分享一篇vue中如何動(dòng)態(tài)綁定圖片,vue中通過data返回圖片路徑的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02

最新評(píng)論

乌鲁木齐市| 通山县| 苗栗县| 昆明市| 福贡县| 芮城县| 吴旗县| 余江县| 广州市| 谢通门县| 海伦市| 金堂县| 德江县| 穆棱市| 沂源县| 四会市| 牟定县| 阳高县| 方山县| 和平区| 新乐市| 岗巴县| 巴青县| 云南省| 泸溪县| 滁州市| 赣州市| 台南县| 外汇| 柘城县| 邵阳县| 萍乡市| 高淳县| 桦甸市| 凯里市| 崇明县| 嘉义县| 临澧县| 兴隆县| 屯昌县| 孝义市|