Vue中使用mixins混入方式
mixins在Vue中的用法
一、mixins混入
混入(mixins)提供了一種非常靈活的方式,來分發(fā)vue組件中的可服用功能。一個混入對象可以包含任意的組件選項(vue在script的部分)。當組件使用混入對象時,所有混入對象的選項都將被“混合”進入改組件本身的選項。
vue提供的一種混合機制,能夠更好的實現(xiàn)組件功能復用,混合對象(mixins)可以包含任意組件選項(data、created、mounted、methods、filters等),組件引入后相關選項會進行合并,相當于引入后,父組件各屬性進行擴充;
二、組件和mixins的區(qū)別
組件在引用之后相當于在父組件內(nèi)開辟了一塊單獨的空間,來根據(jù)父組件props過來的值進行相應的操作,本質(zhì)上兩者還是涇渭分明,相對獨立。
mixins則是在引入組件之后,是將組件內(nèi)部的內(nèi)容如data等方法、method等屬性與父組件相應內(nèi)容進行合并。相當于在引入后,父組件的各種屬性方法都被擴充。
簡單理解:減少代碼冗余,提高開發(fā)效率,復用組件數(shù)據(jù),方法等,以提高開發(fā)速度
三、為什么使用mixins
- mixins分為全局混入和局部混入,下面我們著重講局部混入
- 注意不同組件混入之后,會生成不同的實例,數(shù)據(jù)會相互隔離,互不影響
- 注意在引入mixins的同時,組件中重復定義,minxins中的屬性方法會被覆蓋
- 使用 mixins 之后,該組件包含 mixins 中的所有數(shù)據(jù),并且可以使用
this
進行訪問。 您也可以使用變量而不是單獨的文件來定義 mixins
四、Vue項目實際使用
- 新建
src/minxins/index.js
// 引入下載文件接口 import { downTemplateFile } from '@/api/home' // 導出 myMixins 函數(shù) export const myMixins = { data() { return { } }, methods: { // 下載方法,參數(shù)傳文件ID toLogin(id) { downTemplateFile({ id1: id }).then(res => { if (res.size != 97) { let blob = new Blob([res]) let objectUrl = window.URL.createObjectURL(blob) if (navigator.msSaveBlob) { return navigator.msSaveBlo(blob, '下載文件.doc') } else { let a = document.createElement('a') document.body.appendChild(a); a.style.display = 'none' a.setAttribute('href', objectUrl) a.setAttribute('download', '下載文件.doc') a.click(); URL.revokeObjectURL(objectUrl); } } else { this.$message.error('系統(tǒng)錯誤,請稍后重試!') } }) } } }
index.vue
引入注冊并使用mixins
<template> <div class="index"> <button @click="downLoadTempFile(1)">觸發(fā)mixins下載方法</button> </div> </template> <script> // 引入 myMixins 函數(shù),導出什么就引入什么 import { myMixins } from '@/mixins'; export default { data(){ return { } }, // 注冊 mixins: [myMixins], methods:{ async downLoadTempFile(id){ // 直接使用this.方法名就可以調(diào)用到myMixins里的方法 this.toLogin(id) }, } } </script>
五、全局混入(不推薦)
main.js
import Vue from 'vue' import App from './App.vue' import { myMixins } from "@/mixins" Vue.mixin(myMixins); Vue.config.productionTip = false new Vue({ render: h => h(App), }).$mount('#app')
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
基于Vue實現(xiàn)后臺系統(tǒng)權限控制的示例代碼
本篇文章主要介紹了基于Vue實現(xiàn)后臺系統(tǒng)權限控制的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08前端文件導出設置responseType為blob時遇到的問題及解決
這篇文章主要給大家介紹了關于前端文件導出設置responseType為blob時遇到的問題及解決方法,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09Vue.extend實現(xiàn)組件庫message組件示例詳解
這篇文章主要為大家介紹了Vue.extend實現(xiàn)組件庫message組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07詳解如何在Vue3+TS的項目中使用NProgress進度條
本文主要介紹了詳解如何在Vue3+TS的項目中使用NProgress進度條,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06vue前端實現(xiàn)dhtmlxgantt甘特圖代碼示例(個人需求)
這篇文章主要介紹了如何使用dhtmlx-gantt和chinese-days插件在項目中實現(xiàn)節(jié)假日置灰顯示的功能,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-03-03解決VUE 在IE下出現(xiàn)ReferenceError: Promise未定義的問題
這篇文章主要介紹了解決VUE 在IE下出現(xiàn)ReferenceError: Promise未定義的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11Vue3 組合式函數(shù)Composable最佳實戰(zhàn)
這篇文章主要為大家介紹了Vue3 組合式函數(shù)Composable最佳實戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06