理解Vue2.x和Vue3.x自定义指令用法及钩子函数原理

 更新时间:2021年09月23日 16:31:10   作者:SpringSir  
这篇文章主要介绍了理解Vue2.x和Vue3.x的自定义指令的用法及钩子函数原理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Vue2.x用法

全局注册

Vue.directive( 指令名, { 自定义指令生命周期 } )

局部注册

directives: { 指令名, { 自定义指令生命周期 } }

使用

v-指令名: 属性名.修饰符=“value值”

钩子函数

bind - 自定义指令绑定到 DOM 后调用. 只调用一次, 注意: 只是加入进了DOM, 但是渲染没有完成

inserted - 自定义指令所在DOM, 插入到父 DOM 后调用, 渲染已完成(最最重要)

update - 元素更新, 但子元素尚未更新, 将调用此钩子( 自定义指令所在组件更新时执行, 但是不保证更新完成 ) —> 和自定义所在组件有关

componentUpdated - 组件和子级更新后执行( 自定义指令所在组件更新完成, 且子组件也完成更新 ),

—> 和自定义所在组件有关

unbind - 解绑(销毁) .( 自定义指令所在 DOM 销毁时执行 ). 只调用一次

钩子函数的参数

注意: 自定义指令中, 都不能直接使用this

1.el: 当前指令所在的dom元素。

2.binding: 是一个对象, 表示当前指令上的属性、修饰符、value值等信息。只有value最重要, 常用

arg:String, 属性名 。例如 v-my-directive:foo 中,属性名为 “foo”。

modifiers:Object, 包含所有修饰符的一个对象。例如:v-my-directive.foo.bar 中,修饰符对象为 { foo: true, bar: true }。

name:String, 指令名,不包括 v- 前缀。

rawName, String, 完整指令名,例如 v-my-directive:foo.bar=“1 + 1” 中, 完整指令名就是 v-my-directive:foo.bar=“1 + 1”

value:Any, 指令绑定的当前值,例如:v-my-directive=“1 + 1” 中,绑定值为 2。(最最重要)

expression:String, 解析的哪一个值、表达式。例如 v-my-directive=“1 + 1” 中,表达式为 “1 + 1”。

oldValue:Any, 指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。

oldArg:Any, 指令属性名的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。

3.vnode:当前节点信息, 可以获取, 当前指令所在组件的实例 vnode.context - 当前指令所在的实例对象

4.oldVnode:上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。

Vue3.x用法

用法和 Vue2.x 一样

全局注册

Vue.directive( 指令名, { 自定义指令生命周期 } )

局部注册

directives: { 指令名, { 自定义指令生命周期 } }

使用

v-指令名: 属性名.修饰符=“value值”

以插件的形式, 进行全局注册

在这里插入图片描述

钩子函数

较 Vue2.x 相比, 钩子函数有变化

最终的 API 如下:

const MyDirective = {
  created(el, binding, vnode, prevVnode) {}, // 新增
  beforeMount() {},
  mounted() {},
  beforeUpdate() {}, // 新增
  updated() {},
  beforeUnmount() {}, // 新增
  unmounted() {}
}

created - 自定义指令所在组件, 创建后

beforeMount - 就是Vue2.x中的 bind, 自定义指令绑定到 DOM 后调用. 只调用一次, 注意: 只是加入进了DOM, 但是渲染没有完成

mounted - 就是Vue2.x中的 inserted, 自定义指令所在DOM, 插入到父 DOM 后调用, 渲染已完成(最最重要)

beforeUpdate - 自定义指令所在 DOM, 更新之前调用

updated - 就是Vue2.x中的 componentUpdated

beforeUnmount - 销毁前

unmounted - 销毁后

以上就是理解Vue2.x和Vue3.x自定义指令用法及钩子函数原理的详细内容,更多关于Vue2.x和Vue3.x的资料请关注脚本之家其它相关文章!

相关文章

  • Vue利用高德地图API实现实时天气

    Vue利用高德地图API实现实时天气

    这篇文章主要为大家详细介绍了Vue如何利用高德地图API实现实时天气,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • vue.js 获取select中的value实例

    vue.js 获取select中的value实例

    下面小编就为大家分享一篇vue.js 获取select中的value实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • vue项目搭建以及全家桶的使用详细教程(小结)

    vue项目搭建以及全家桶的使用详细教程(小结)

    这篇文章主要介绍了vue项目搭建以及全家桶的使用详细教程(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • vue3中不支持.sync语法糖的解决方法

    vue3中不支持.sync语法糖的解决方法

    在 Vue 3 中,.sync 修饰符已经被移除,在 Vue 2 中,.sync 修饰符是一个语法糖,用于简化子组件和父组件之间的双向数据绑定,那么本文将给大家介绍一下vue3中不支持.sync语法糖的解决方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Vue 实现列表动态添加和删除的两种方法小结

    Vue 实现列表动态添加和删除的两种方法小结

    今天小编就为大家分享一篇Vue 实现列表动态添加和删除的两种方法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue项目中页面跳转传参的方法总结

    vue项目中页面跳转传参的方法总结

    在Vue项目中,你可以使用路由(vue-router)来实现页面跳转并传递参数,这篇文章主要为大家整理了一些常用的方法,感兴趣的小伙伴可以学习一下
    2023-11-11
  • vue组件开发之slider组件使用详解

    vue组件开发之slider组件使用详解

    这篇文章主要为大家详细介绍了vue组件开发之slider组件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • vue几个常用跨域处理方式介绍

    vue几个常用跨域处理方式介绍

    本篇文章给大家详细介绍了vue跨域处理问题的方式以及相关知识点介绍,对此有兴趣的朋友学习下。
    2018-02-02
  • vue2.0开发实践总结之入门篇

    vue2.0开发实践总结之入门篇

    这篇文章主要为大家总结了vue2.0开发实践之入门,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Vue.js页面验证跳转功能实现

    Vue.js页面验证跳转功能实现

    这篇文章主要介绍了Vue.js页面验证跳转功能实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-04-04

最新评论