网站链接: 我爱捣鼓
当前位置: 首页 > 前端开发 > Vue

vue指令钩子函数的作用和用法

2023/3/11 17:29:31

vue指令钩子函数的作用和用法bind 只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。inserted 被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。updated 所在组件的 VNode 更新时调用,但是可能…

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)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!

相关资讯

  • vue兄弟平级组件如何传递参数值?

    vue组件传值不外乎三种,父传子、子传父、平级,今天我们就来着重说说vue平级组件如何传递参数值? 假设你有两个Vue组件需要通信: A 和 B ,A组件按钮上面绑定了点击事件,发送一则消息,B组件接收。初始化,全局创建$bus 直接在项目中的 main.js 初始化 …

    2023/1/7 13:08:32