中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解vue mixins和extends的巧妙用法

發布時間:2020-09-03 11:32:41 來源:腳本之家 閱讀:159 作者:mrr 欄目:web開發

vue提供了mixins、extends配置項,最近使用中發現很好用。

混合mixins和繼承extends

看看官方文檔怎么寫的,其實兩個都可以理解為繼承,mixins接收對象數組(可理解為多繼承),extends接收的是對象或函數(可理解為單繼承)。

繼承鉤子函數

const extend = {
 created () {
  console.log('extends created')
 }
}
const mixin1 = {
 created () {
  console.log('mixin1 created')
 }
}
const mixin2 = {
 created () {
  console.log('mixin2 created')
 }
}
export default {
 extends: extend,
 mixins: [mixin1, mixin2],
 name: 'app',
 created () {
  console.log('created')
 }
}

控制臺輸出

extends created
mixin1 created
mixin2 created
created
  • 結論: 優先調用mixins和extends繼承的父類,extends觸發的優先級更高,相對于是隊列
  • push(extend, mixin1, minxin2, 本身的鉤子函數)
  • 經過測試, watch的值 繼承規則一樣。

繼承methods

const extend = {
 data () {
  return {
   name: 'extend name'
  }
 }
}
const mixin1 = {
 data () {
  return {
   name: 'mixin1 name'
  }
 }
}
const mixin2 = {
 data () {
  return {
   name: 'mixin2 name'
  }
 }
}
// name = 'name'
export default {
 mixins: [mixin1, mixin2],
 extends: extend,
 name: 'app',
 data () {
  return {
   name: 'name'
  }
 }
}
// 只寫出子類,name = 'mixin2 name',extends優先級高會被mixins覆蓋
export default {
 mixins: [mixin1, mixin2],
 extends: extend,
 name: 'app'
}
// 只寫出子類,name = 'mixin1 name',mixins后面繼承會覆蓋前面的
export default {
 mixins: [mixin2, mixin1],
 extends: extend,
 name: 'app'
}
  • 結論:子類再次聲明,data中的變量都會被重寫,以子類的為準。
  • 如果子類不聲明,data中的變量將會最后繼承的父類為準。
  • 經過測試, props中屬性 、 methods中的方法 和 computed的值 繼承規則一樣。

下面單獨介紹下mixins、extends、extend

mixins

調用方式: mixins: [mixin1, mixin2]

是對父組件的擴充,包括methods、components、directive等。。。

觸發鉤子函數時,先調用mixins的函數,再調用父組件的函數。

雖然也能在創建mixin時添加data、template屬性,但當父組件也擁有此屬性時以父為準,從這一點也能看出制作者的用心(擴充)。

data、methods內函數、components和directives等鍵值對格式的對象均以父組件/實例為準

extends

調用方式: extends: CompA

同樣是對父組件的擴充,與mixins類似,但優先級均次于父組件

extend

擴展組件的構造器

當我們調用vue.component('a', {...})時自動調用

值得注意的是extend內的data為一個函數

總結

以上所述是小編給大家介紹的vue mixins和extends的巧妙用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

拜泉县| 饶河县| 隆安县| 峡江县| 山阳县| 双江| 梁平县| 禹城市| 长泰县| 南投县| 云梦县| 阿勒泰市| 柘城县| 金秀| 同心县| 尉犁县| 乌拉特前旗| 江陵县| 大荔县| 罗甸县| 融水| 白玉县| 香河县| 秦皇岛市| 洪洞县| 翼城县| 特克斯县| 沈阳市| 万安县| 微博| 罗定市| 河南省| 阳原县| 剑阁县| 娄底市| 乳源| 宜黄县| 九龙坡区| 开鲁县| 团风县| 谷城县|