Vue自定义指令(二)浅窥

简介: Vue自定义指令(二)浅窥

前言


上一章我们简易声明了一个自定义指令,并用到了指令对象中的mounted钩子函数,并通过他钩子函数的入参,实现了input自动聚焦的功能。不过你以为的钩子函数以及入参就这么简单吗?那就大错特错了,下面我们就让我们看看他还有哪些其他的钩子函数和入参吧。


指令的钩子函数


指令的钩子函数其实和组件的生命周期钩子函数很像,基本你记住其中一个,另一个也会得心应手的。


  • created: 在事件监听器应用或者元素绑定前进行调用
  • beforeMount:将元素插入到DOM之前调用
  • mounted: 在绑定元素的所有节点挂载完成之后调用(包括其父节点和所有子节点)
  • beforeUpdate:在绑定元素更新之前调用(包括父组件)
  • updated:在绑定元素更新之后调用(包括父组件)
  • beforeUnmount:在绑定元素卸载之前调用(包括父组件)
  • unmount:在绑定元素卸载之后调用(包括父组件)


const vSelfDirective = {
  created(el, binding, vnode, prevVnode) {},
  beforeMount(el, binding, vnode, prevVnode) {},
  mounted(el, binding, vnode, prevVnode) {},
  beforeUpdate(el, binding, vnode, prevVnode) {},
  updated(el, binding, vnode, prevVnode) {},
  beforeUnmount(el, binding, vnode, prevVnode) {},
  unmounted(el, binding, vnode, prevVnode) {}
}
复制代码


指令的钩子参数


在使用钩子函数时,我们可以接到这几种参数。这里就浅浅的介绍下,比较自定义用的场景也不多,更何况这些呢。


  • el:当前指令绑定的元素,可以直接操作DOM
  • binding:入参为一个对象。属性如下:
  • value:传递给指令的值。
  • oldValue:之前的值。
  • arg:传递给指令的参数。
  • modifiers:包含修饰符的对象。
  • instance:该指令绑定元素的组件实例。
  • dir:指令的定义对象。
  • vnode:绑定元素的底层VNode。
  • prevVnode:之前绑定元素的底层VNode。


指令的简化形式


当我们使用自定义指令的时候,大多情况下我们是会在mounted和updated上都会执行相同的行为。而为此,vue也给我们提供简化的形式。


当我们声明自定义指令时,不需要放在对象里面,指令声明一个函数即可:


const vFocus = (el) => el.focus()


相关文章
|
6天前
|
JavaScript 前端开发 测试技术
使用 Vue CLI 脚手架生成 Vue 项目
通过 Vue CLI 创建 Vue 项目可以极大地提高开发效率。它不仅提供了一整套标准化的项目结构,还集成了常用的开发工具和配置,使得开发者可以专注于业务逻辑的实现,而不需要花费大量时间在项目配置上。
63 7
使用 Vue CLI 脚手架生成 Vue 项目
|
4天前
|
JavaScript
|
2天前
|
JavaScript
vue知识点
vue知识点
10 3
|
4天前
|
存储 JavaScript API
Vue状态管理深度剖析:Vuex vs Pinia —— 从原理到实践的全面对比
Vue状态管理深度剖析:Vuex vs Pinia —— 从原理到实践的全面对比
11 2
|
8天前
|
JavaScript 算法
“Error: error:0308010C:digital envelope routines::unsupported”启动vue项目遇到一个错误【已解决
“Error: error:0308010C:digital envelope routines::unsupported”启动vue项目遇到一个错误【已解决
11 1
|
8天前
|
JavaScript
error Component name “Login“ should always be multi-word vue/multi-word-component-names【已解决】
error Component name “Login“ should always be multi-word vue/multi-word-component-names【已解决】
20 1
|
9天前
|
JavaScript API
【vue实战项目】通用管理系统:信息列表,信息的编辑和删除
【vue实战项目】通用管理系统:信息列表,信息的编辑和删除
26 2
|
1天前
|
JavaScript 前端开发
Vue躬行记(7)——渲染函数和JSX
Vue躬行记(7)——渲染函数和JSX
|
2天前
|
前端开发 JavaScript
Vue底层实现原理总结
Vue底层实现原理总结
|
9天前
|
JavaScript 前端开发 Java
【vue实战项目】通用管理系统:作业列表
【vue实战项目】通用管理系统:作业列表
23 0