這不是Vue的專屬的,可以說是一種思想,在很多開發框架中都實現了Mixin。
官方解釋:
mixin提供了一種非常靈活的方式,來分發Vue組件中可復用的功能。一個混入對象可以包含任意組件選項。當組件使用混入對象時,所有混入對象的選項將被“混合”進入該組件本身的選項。
自己的理解:
將組件的公共邏輯或者配置提取出來,哪個組件需要用到時,直接將提取的這部分混入到組件內部即可。這樣可以減少代碼冗余度,也可以讓后期維護起來更加容易。
vuex: 公共狀態管理,如果在一個組件中更改Vuex中的某個數據,name其他所有引入了Vuex中該數據的組件也會跟著變化;
Mixin: 中的數據和方法都是獨立的,組件之間使用后是相互不影響的。
可以理解為一個對象。只不過這個對象里面可以包含Vue組件中的一些常見配置。如data,methods,created。
<script>//1、引入importMyMixinfrom"../../mixin/index"exportdefault{//使用mixins:[MyMixin],}</script>
在main.js中配置全局混入,請謹慎使用全局混入,因為它會影響每個單獨創建的Vue實例。推薦將其作為插件發布,以避免重復應用混入。
importMixinfrom"./mixin";Vue.mixin(Mixin)
mixin中定義的屬性或方法名稱與組件中定義的名稱沖突了,該怎么辦?
當發生了沖突,默認使用或執行組件內部的數據或方法。
確切來說不算沖突,因為生命周期函數的名稱都是固定的。默認的合并策略如下:
先執行mixin中生命周期函數中的代碼,然后執行組件內部的代碼。
當mixin中的data數據和組件中的data的數據沖突時,組件中的data數據會覆蓋mixin中數據。
命名方法的名字一樣就會沖突。
可以自定義合并規則解決沖突,但是感覺沒必要,這使項目更加復雜了
提高代碼復用性
無需傳遞狀態
維護方便,只需要修改一個地方
命名沖突
濫用的話后期很難維護
不好追溯源,排查問題稍顯麻煩
不能輕易的重復代碼
簡單案例
創建Button.vue組件
<template><pclass="Button"><button:class="['my-btn',btnStyle]"><slot></slot></button></p></template><script>exportdefault{name:"Button",props:{btnStyle:{type:String,default:'btn-primary'},},}</script><stylescoped>.my-btn{height:34px;padding:015px;border:none;background-color:#874b4b;color:#fff;}.my-btn.btn-primary{background-color:blue;/*color:#fff;*/}.my-btn.btn-danger{background-color:red;/*color:#fff;*/}</style>
在index.js中引入并暴露:
importMyBtnfrom"./MyUI/Button";exportdefault{components:{MyBtn}}
在組件內混入使用的方法
<template><pclass="MixinStudy"><!--通過Mixin寫的一個UI組件button--><MyBtnbtnStyle="btn-danger">點擊</MyBtn></p></template><script>importMyMixinfrom"../../mixin/index"exportdefault{name:"MixinStudy",mixins:[MyMixin],}</script>
全局混入的使用方法
main.js文件中importVuefrom'vue'importAppfrom'./App.vue'importrouterfrom'./router'importMixinfrom"./mixin";Vue.prototype.$echarts=echartsVue.config.productionTip=false;Vue.mixin(Mixin)newVue({router,render:h=>h(App)}).$mount('#app')//組件中<template><pclass="MixinStudy"><!--通過Mixin寫的一個UI組件button--><MyBtnbtnStyle="btn-danger">點擊</MyBtn></p></template><script>exportdefault{name:"MixinStudy",}</script>
到此,關于“vue中mixin怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注本站網站,小編會繼續努力為大家帶來更多實用的文章!
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
投資信托產品可靠嗎?【1】信托投資從法律意義、監管層面上來講是可靠的。在2001年出臺的《信托法》中,對信托進行了定義:信托,是指委托人基于對受托人的信任,將其財產權委托給受托人,由受托人按委托人的意愿以自己的名義,為受益人的利益或為特定目的,進行管理或者處分的行為。簡單來說就是受人之托代人理財,它的核心功能就是財產管理。而信托公司作為四大金融機構之一,要接受銀保監會嚴格的監管?!?】信托從制度方...
中國基金報記者李書超“一歲除在鞭炮聲中”,隨著2021年的正式結束,徐啟將在2022年迎來新的一年。2021年,各類基金中,權益ETF規模迅速擴大,總規模躍升至1萬億元。華夏、易方達、華泰白銳基金位列前三,旗下權益ETF管理規模均超過千億元。南方和國泰基金距離千億元大關僅一步之遙。ETF產品中,2021年中國互聯網ETF最受青睞,逆市暴增269億?;稹暗I”現象明顯,新發行基金數量和規模也創歷史...
(相關資料圖)最近大家都在討論安安靜靜類似的詞語一年級_安安靜靜類似的詞語有?相關的事情,對此小編也是非常的感應興趣,那么這件事具體又是怎么回事呢?下面就是小編搜索到的關于安安靜靜類似的詞語一年級_安安靜靜類似的詞語有?事件的相關信息,我們一起來看看吧!1、1斯文[sswNWn],[解說]:形容你眼中的儒雅,[出自]:曹青雪琴《紅樓夢》第七回:“人家孩子斯文慣了,一眼就看出你的落魄,笑死我了。2、...