自定義指令中的鉤子函數

鉤子函數

bind:

只調用一次,指令第一次綁定到元素時調用,這個鉤子函數可以定義在綁定時執行一次的初始化動作。

inserted:

被綁定元素插入父節點時調用(父節點存在即可調用,不必存在document中)。

updated:

所在組件的VNode更新時調用,但是可能發生在其孩子的VNode更新之前,指令的值可能發生了改變也可能沒有,但是你可以通過比較更新前後的值來忽悠不必要的模板更新(詳細的鉤子函數參數見下)

componentUpdated:

所在組件的VNode及其孩子的VNode全部更新時調用。
unbind:之調用一次,指令與元素解綁時調用。
接下來我們看一下鉤子函數的參數(包括el,binding,vnode,oldVnode)

鉤子函數的參數

el

指令所綁定的元素,可以用來直接操作DOM。

binding:

一個對象,包含以下屬性
name:指令名,不包含 v- 前綴
value:指令的綁定值,例如:v-my-directive=“1+1”,value的值是2.
oldValue:指令綁定的前一個值,僅在updatehe compenentUpdate鉤子中可用,無論值是否發生改變都可用。
expression:綁定值的字符串形式,例如v-my-directive=“1+1”,expression的值是“1+1”。
arg:傳遞給指令的參數,例如v-my-directive:foo。arr的值是"foo"
modifiers:一個包含修飾符的對象,例如:v-my-directive.foo.bar,修飾符對象modifiers的值是{foo:true,bar:true}

vnode

vue編譯生成的虛擬節點,查閱vNode Api 瞭解更多詳情
oldVnode:上一個虛擬節點,僅在update和ComponentUpdated鉤子中可用

注意

處理el之外,其它參數都應該是隻讀的,儘量不要修改他們,如果需要鉤子之間共享數據,建議通過元素的dataset來進行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章