《Vue3实战》 第八章 自定义指令

简介: 《Vue3实战》 第八章 自定义指令

前言

Vue 允许注册自定义指令

1、例子1 获取输入框焦点

<template>
  <div>
    <input type='text' v-focus/>
  </div>
</template>
<script>
export default {
  name: 'HelloWorld',
  directives:{
    focus:{
      mounted(el){
        el.focus();
      }
    }
  }
}
</script>

1.1、钩子函数

指令定义函数提供了几个钩子函数(可选)

钩子函数 作用
created : 在绑定元素的属性或事件监听器被应用之前调用。
beforeMount : 指令第一次绑定到元素并且在挂载父组件之前调用。
mounted : 在绑定元素的父组件被挂载后调用。
beforeUpdate : 在更新包含组件的 VNode 之前调用。。
updated : 在包含组件的 VNode 及其子组件的 VNode 更新后调用。
beforeUnmount : 当指令与在绑定元素父组件卸载之前时,只调用一次。
unmounted : 当指令与元素解除绑定且父组件已卸载时,只调用一次。

1.1.1、钩子函数参数

钩子函数的参数有:

1、el

el 指令绑定到的元素。这可用于直接操作 DOM。

2、binding

binding 是一个对象,包含以下属性:

  • instance:使用指令的组件实例。
  • value:传递给指令的值。例如,在v-my-directive=“1 + 1” 中,该值为 2。
  • oldValue:先前的值,仅在beforeUpdate 和updated 中可用。值是否已更改都可用。
  • arg:参数传递给指令 (如果有)。例如在 v-my-directive:foo 中,arg 为"foo"。
  • modifiers:包含修饰符 (如果有) 的对象。例如在v-my-directive.foo.bar 中,修饰符对象为{foo: true,bar: true}。
  • dir:一个对象,在注册指令时作为参数传递。例如,在以下指令中
{
  mounted(el) {
    el.focus()
  }
}

3、vnode

作为 el 参数收到的真实 DOM 元素的蓝图。

4、prevNode

上一个虚拟节点,仅在 beforeUpdate 和 updated 钩子中可用。

目录
相关文章
|
1月前
|
JavaScript
【Vue面试题十四】、说说你对vue的mixin的理解,有什么应用场景?
这篇文章详细介绍了Vue中`mixin`的概念、应用场景和源码分析,解释了`mixin`如何用于代码复用、功能模块化,并通过实际代码示例展示了在Vue组件中局部混入和全局混入的使用方式。
【Vue面试题十四】、说说你对vue的mixin的理解,有什么应用场景?
|
1月前
|
JavaScript 程序员 数据安全/隐私保护
【Vue面试题二十】、你有写过自定义指令吗?自定义指令的应用场景有哪些?
这篇文章详细介绍了Vue中的自定义指令,包括指令系统的概念、如何实现自定义指令的全局和局部注册,以及自定义指令的钩子函数。文章还提供了几个自定义指令的应用场景示例,如表单防止重复提交、图片懒加载和一键复制功能,展示了自定义指令的灵活性和强大功能。
【Vue面试题二十】、你有写过自定义指令吗?自定义指令的应用场景有哪些?
|
3月前
|
JavaScript
vue基础概念(1)
vue基础概念(1)
22 0
|
4月前
|
JavaScript
在Vue中,如何使用自定义指令?
在Vue中,如何使用自定义指令?
28 1
|
Web App开发 JavaScript 前端开发
Vue学习之Vue原理与Vue基础语法、事件标签总结
Vue主要的就是MVVM的实现,它既实现了Anguler的模块化开发,又实现了React的虚拟DOM,但是作为一个后端开发人员,我们只要求会用就可以,并不用去了解ES6标准、Node.js啥的,在这里就Vue简单的一些操作进行梳理一下。
70 0
|
4月前
|
JavaScript 调度 开发者
Vue3中如何使用自定义指令?
Vue3中如何使用自定义指令?v
87 1
|
4月前
【Vue2.0学习】—自定义指令(四十九)
【Vue2.0学习】—自定义指令(四十九)
|
4月前
|
JavaScript
【Vue2.0学习】— Vue监视数据的原理(四十二)
【Vue2.0学习】— Vue监视数据的原理(四十二)
【Vue3 第六章】to 系列
【Vue3 第六章】to 系列
83 0
|
JavaScript API
学习Vue3 第十二章(认识组件&Vue3生命周期)
引入子组件 helloWorld 然后直接就可以去当标签去使用 (切记组件名称不能与html元素标签名称一样)
92 0
学习Vue3 第十二章(认识组件&Vue3生命周期)