Vue自定義指令與鉤子函式

2021-09-24 13:06:13 字數 1716 閱讀 3361

什麼是自定義指令?

除了使用 vue 提供的內建指令之外,我們可以自定義一些自己的指令

什麼時候需要自定義指令?

當需要不可避免的操作 dom 的時候,使用自定義指令來解決

如何註冊和使用自定義指令?

一、註冊

1 . 全域性註冊,在任何元件中都可以使用全域性註冊自定義指令

2 . 區域性註冊,只能在當前元件使用該指令

3 . 如果需要在多個不同的元件中使用該指令,則把它定義為全域性的

4 . 非通用的,不需要多次使用的指令我們定義到區域性—— 到底是否通用取決於你的功能業務

二、 使用

eg:註冊乙個全域性自定義指令v-focus

vue.directive(『指令名稱』, )

第二個引數就是需要配置指令的生命鉤子函式

指令是可以傳值的。什麼意思呢?例如 v-show=「布林值」

vue.

directive

('focus',,

// 被繫結元素插入父節點時呼叫 (僅保證父節點存在,但不一定已被插入文件中)。

// 如果你需要操作作用指令的父元素,則最起碼寫到這個 inserted 中

inserted

(el)

,update()

,componentupdated()

,unbind()

})

模擬 v-show 實現,根據值的真假來顯示或者隱藏作用該指令的元素

vue.

directive

('my-show'

, else },

inserted

(el, binding)

else},

// 緊接著我們發現 update 和 componentupdated 只有在指令的繫結的值發生更新的時候才會觸發

update

(el, binding)

else},

componentupdated

(el, binding)

,unbind()

})

update 和 componentupdated 的區別是:

inserted:表示元素 插入到dom中的時候,會執行 inserted 函式【觸發1次】

update:當vnode更新的時候,會執行 updated, 可能會觸發多次

關於函式簡寫,直接繫結到bind 與 update

// 自定義全域性指令 v-focus,為繫結的元素自動獲取焦點:

vue.directive('focus', 

});// 在元素 剛繫結了指令的時候,還沒有 插入到 dom中去,這時候,呼叫 focus 方法沒有作用

// 因為,乙個元素,只有插入dom之後,才能獲取焦點

// el.focus()

// 樣式只要通過指令繫結給了元素,不管這個元素有沒有被插入到頁面中去,這個元素肯定有了乙個內聯的樣式

// 將來元素肯定會顯示到頁面中,這時候,瀏覽器的渲染引擎必然會解析樣式,應用給這個元素

// 自定義區域性指令 v-color 和 v-font-weight,為繫結的元素設定指定的字型顏色 和 字型粗細:

directives:

},'font-weight': function (el, binding2)

}

Vue 自定義指令 鉤子函式

除了核心功能缺省內置的指令,vue也允許註冊自定義指令 頁面載入後,讓文字框自動獲取焦點,原生js做法是獲取文字框元素後呼叫focus 方法,但vue不建議手動操作dom元素,所以此時要自定義指令 這裡需要注意的是v on指令繫結focus事件的方式是實現不了上面需求的,區別就像onfocus和fo...

VUE自定義指令鉤子函式講解

除了vue 內建指令外,vue也支援我們自定義註冊指令,分為區域性和全域性註冊 但這些想必大家都不陌生,其中官方api也是寫的明明白白 官方api點這裡 而且自定義指令也會極大程度上幫助我們日常的程式設計,但這是很有意思的事情出現了,就是鉤子函式,很多老鐵都弄不明白這五個函式的具體區別 contai...

自定義指令(鉤子函式)

自定義指令 指令是個函式 物件,用來操作dom的,裡面的this 返回window a 全域性 vue.directive 指令名不帶v 函式 el,binding el 使用指令的dom元素 binding 是個物件 含有傳入的 引數 binding.value b 區域性 定義在選項裡面 dir...