vue指令钩子函数的作用和用法
bind
只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。
inserted
被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。
updated
所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新。
componentUpdated
指令所在组件的 VNode 及其子 VNode 全部更新后调用。
unbind
只调用一次,指令与元素解绑时调用。
钩子函数参数
指令钩子函数会被传入以下参数:
JSON { el:'指令所绑定的元素,可以用来直接操作 DOM。' binding:{/* 一个对象,包含以下属性: */ name:'指令名,不包括 v- 前缀。' value:'指令的绑定值,例如:v-my-directive="1 + 1" 中,绑定值为 2。' oldValue:'指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。' expression:'字符串形式的指令表达式。例如 v-my-directive="1 + 1" 中,表达式为 "1 + 1"。' arg:'传给指令的参数,可选。例如 v-my-directive:foo 中,参数为 "foo"。' modifiers:'一个包含修饰符的对象。例如:v-my-directive.foo.bar 中,修饰符对象为 { foo: true, bar: true }。' vnode:'Vue 编译生成的虚拟节点。' }
oldVnode:'上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。'
代码展示
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Vue指令钩子函数探索</title> </head> <body> <div id="app"> <p v-demo></p> </div> <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.min.js"></script> <script type="text/javascript"> Vue.directive('demo', { bind: function(el, binding, vnode) { var s = JSON.stringify el.innerHTML = 'name: ' + s(binding.name) + '<br>' + 'value: ' + s(binding.value) + '<br>' + 'expression: ' + s(binding.expression) + '<br>' + 'argument: ' + s(binding.arg) + '<br>' + 'modifiers: ' + s(binding.modifiers) + '<br>' + 'vnode keys: ' + Object.keys(vnode).join(', ') } }) const vm = new Vue({ el: '#app' }) </script> </body> </html>
通过以上内容我们知道了vue 指令钩子函数的作用和用法。感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!