Vue中mixins的使用方法詳解
1 什么是mixins
它是一種分發(fā) Vue 組件中可復(fù)用功能的使用方式,mixins 是一個(gè) js 對象,包含我們組件script中的任意功能選項(xiàng),如:data、components、methods、created、computed 等等。我們只要將公用的功能以對象的方式傳入 mixins 選項(xiàng)中,當(dāng)組件使用 mixins 對象,所有 mixins 對象的選項(xiàng)都將被擴(kuò)展到該組件本身的選項(xiàng)中,提高代碼的重用性,易于代碼維護(hù)。
當(dāng)多個(gè)組件中的數(shù)據(jù)或功能很相近時(shí),可以通過 mixins 將公共部分提取出來,進(jìn)行封裝。
2 創(chuàng)建并使用 mixins
在 src 文件夾創(chuàng)建 mixins 文件夾,在文件夾下創(chuàng)建一個(gè) js 文件,在這個(gè) js 對象中可以定義 data、components、methods、created、computed 等屬性,并通過 export 導(dǎo)出該對象。
在需要調(diào)用的組件中引入 mixins 文件即可。
3 注意事項(xiàng)
(1)方法和參數(shù)在不同組件中不共享
即其他組件無法從當(dāng)前組件中獲取 mixins 中的數(shù)據(jù)和方法,很好的做到了數(shù)據(jù)隔離的效果。
// 在 myMixins.js 中定義一個(gè) age 字段和 getAge 方法,用來獲取年齡信息 export const myMixins = { data() { return { age: 18, } }, mounted() { this.getAge() }, methods: { getAge() { console.log(this.age) } } }
// 在第一個(gè)組件中引入 mixins,并且對 age 加1 import { myMixins } from "@/mixins/myMixins.js"; export default { mixins: [myMixins], data() { return {} }, created() { this.age++ }, } // 發(fā)現(xiàn)控制臺(tái)輸出 19,說明當(dāng)前組件的 age 變化了
(2)合并沖突
當(dāng) mixins 的值為對象(components、methods 、computed、data),混入到某個(gè)組件中時(shí),選項(xiàng)會(huì)被合并。當(dāng)對象名稱沖突時(shí)優(yōu)先組件,組件中的值會(huì)覆蓋混入對象的。
// myMixins.js export const myMixins = { components:{}, data() { return {} }, created() { console.log('data from mixins') } } // 組件中引入 mixins import { myMixins } from "@/mixins/myMixins.js"; export default { mixins: [myMixins], data() { return {} }, created() { console.log('data from template') } } // 先輸出混入對象的值,再輸入組件的值 // data from mixins // data from template
(3)異步請求
當(dāng)混入里面包含異步請求函數(shù),而我們又需要在組件中使用異步請求函數(shù)的返回值時(shí),我們會(huì)取不到此返回值,解決方案是:不要返回結(jié)果,而是直接返回異步函數(shù)
// myMixins.js 中直接返回異步函數(shù) export const myMixins = { components:{}, data() { return { num: 1, } }, methods: { async getDate1() { let result = await new Promise((resolve,reject) => { let a = 1; setTimeout(() => { resolve(1) },500) }) return result }, } } // 組件中獲取混入的異步函數(shù),通過then 方法獲取函數(shù)值。 import { myMixins } from "./myMixins.js"; export default { mixins: [myMixins], data() { return {} }, mounted() { this.getDate1().then(res => { console.log(res) }) } }
到此這篇關(guān)于Vue中mixins的使用方法詳解的文章就介紹到這了,更多相關(guān)Vue mixins內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue.js中toast用法及使用toast彈框的實(shí)例代碼
這篇文章主要介紹了vue.js中toast用法及使用toast彈框的實(shí)例代碼,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒加載,需要的朋友可以參考下2018-08-08Vue封裝DateRangePicker組件流程詳細(xì)介紹
在后端管理項(xiàng)目中使用vue來進(jìn)行前端項(xiàng)目的開發(fā),但我們都知道Vue實(shí)際上無法監(jiān)聽由第三方插件所引起的數(shù)據(jù)變化。也無法獲得JQuery這樣的js框架對元素值的修改的。而日期控件daterangepicker又基于JQuery來實(shí)現(xiàn)的2022-11-11Element控件Tree實(shí)現(xiàn)數(shù)據(jù)樹形結(jié)構(gòu)的示例代碼
我們在開發(fā)中肯定會(huì)遇到用樹形展示數(shù)據(jù)的需求,本文主要介紹了Element控件Tree實(shí)現(xiàn)數(shù)據(jù)樹形結(jié)構(gòu)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08詳解如何使用Vue-PDF在應(yīng)用中嵌入PDF文檔
在現(xiàn)代Web應(yīng)用中,PDF文檔的使用非常普遍,因?yàn)樗梢栽诟鞣N設(shè)備和操作系統(tǒng)上保持一致的外觀和格式,本文我們就來探討一下如何在Vue.js應(yīng)用中使用vue-pdf庫嵌入PDF文檔吧2023-08-08Vue3配置路由ERROR in [eslint]報(bào)錯(cuò)問題及解決
這篇文章主要介紹了Vue3配置路由ERROR in [eslint]報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10