重新設計定製的指令api
,使其更好地符合元件生命週期
元件上的自定義指令使用將遵循與fallthrough
行為rfc
屬性中討論的相同規則。它將通過v-bind="$attrs"
由子元件控制。
const mydirective = ,
inserted() {},
update() {},
componentupdated() {},
unbind() {}
}after
const mydirective = ,
mounted() {},
beforeupdate() {},
updated() {},
beforeunmount() {}, // new
unmounted() {}
}
使自定義指令掛鉤名稱與元件生命週期更加一致。
在3.0
中,通過片段支援,元件可能有多個根節點。當在具有多個根節點的元件上使用自定義指令時,就會產生問題。
為了解釋自定義指令如何在3.0
元件上工作的細節,我們需要首先理解自定義指令是如何在3.0
中編譯的。對於這樣的指令:
被編譯成
const vfoo = resolvedirective('foo')
return withdirectives(h('div'), [
[vfoo, bar]
])
其中vfoo
將是由使用者編寫的指令物件,它包含掛載和更新這樣的鉤子。
withdirective
返回乙個轉殖的vnode
,將使用者鉤子封裝並注入為vnode
生命週期鉤子(更多細節請參見渲染函式api的變化):
}
因此,自定義指令作為vnode資料的一部分完全包括在內。當在元件上使用自定義指令時,這些onvnode***
鉤子作為無關的道具向下傳遞到元件,並最終出現在這個.$attrs
中。
這也意味著可以像模板一樣直接連線到元素的生命週期中,這在定製指令太複雜的時候很方便:
這與vuejs/rfcs#26
中討論的屬性fallthrough
行為一致。因此,元件上的定製指令規則與其他無關屬性相同:由子元件決定在何處以及是否應用它。當子元件在內部元素上使用v-bind="$attrs"
時,它也會應用在它上面的任何定製指令 Vue自定義指令
vue有很多內建的指令,比如說v on,v model,v clock等等,每乙個指令會完成一定的功能,但是這些內建的指令總會有些侷限性,要是能夠自定義指令就好了 vue的自定義指令分類 全域性指令和區域性指令 vue指令的定義和用法 以全域性指令為例 1.語法 vue.directive 指令id...
vue自定義指令
自定義指令主要有兩種方式。一是在元件裡以directives的選項來自定義指令的內容。這樣的自定義指令是區域性的自定義指令,只在當前的元件裡面才能使用。script export default directives arr arr.join el.style.csstext arr script ...
VUE 自定義指令
dom插入便獲取焦點 vue.directive focus 根據指令的值決定自否獲取焦點 vue.directive focus 注 被拖拽的元素必須有定位樣式 vue.directive drag function el,binding document.nm useup function 拓展...