Vue3 指令详解

devtools/2024/12/22 11:24:12/

一、构建指令

1. 生命周期

created:在指令被绑定到元素之前调用。这个钩子很少使用,因为指令通常在元素存在时才需要进行操作。

beforeMount:在指令绑定的元素被插入到 DOM 之前调用。

mounted:在指令绑定的元素被插入到 DOM 后调用。这是最常用的生命周期钩子之一,通常在这里进行对元素的初始化操作。

beforeUpdate:在包含指令的组件更新之前调用。当组件的响应式数据发生变化导致组件重新渲染时,这个钩子会被触发。

updated:在包含指令的组件更新后调用。可以在这里对更新后的元素进行操作。

beforeUnmount:在指令绑定的元素被从 DOM 中移除之前调用。可以在这里进行一些清理操作,例如移除事件监听器等。

unmounted:在指令绑定的元素被从 DOM 中移除后调用。这是另一个进行清理操作的好时机。

javascript">const myDirective = {created(el, binding, vnode) {console.log("指令创建");},beforeMount(el, binding, vnode) {console.log("指令在元素插入 DOM 前");},mounted(el, binding, vnode) {console.log("指令在元素插入 DOM 后");},beforeUpdate(el, binding, vnode, prevVnode) {console.log("指令在组件更新前");},updated(el, binding, vnode, prevVnode) {console.log("指令在组件更新后");},beforeUnmount(el, binding, vnode) {console.log("指令在元素移除 DOM 前");},unmounted(el, binding, vnode) {console.log("指令在元素移除 DOM 后");},};export default myDirective;

2. 生命周期参数

生命周期函数参数 el、binding、vnode、prevNode,分别表示:

el:指令绑定的元素。可进行 DOM 操作。

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

value:指令的绑定值。

arg:传递给指令的参数,如果没有参数则为 undefined。

modifiers:一个包含指令修饰符的对象。

oldValue:上一次更新时的旧值,仅在 beforeUpdate 和 updated 钩子中可用。

vnode:虚拟节点。

prevNode:上一次更新前的虚拟节点。

<input v-focus:a.b="10" /><!--{value: 10,arg: 'a',modifiers: { b: true },oldValue: /* 上一次更新时 value 的值 */} -->

3. 创建指令

在 src/directive 下创建一个 Focus.js 文件,用来自动 input 获取焦点。

javascript">// Focus.jsconst Focus = {mounted: (el) => el.focus(),};export default Focus;

二、引入指令

在 src/main.js 中引入指令

javascript">// main.jsimport { createApp } from "vue";import App from "./App.vue";/** 指令 */import Focus from "@/directive/Focus.js";const app = createApp(App);app.directive("focus", Focus);app.mount("#app");

三、使用指令

在组件中使用指令

javascript"><input v-focus v-model="value" />


http://www.ppmy.cn/devtools/122288.html

相关文章

Watchdog Timers(WDT)

文章目录 1. 介绍2. Feature List3. 概述3.1. Safety Watchdog3.2. CPU Watchdog 4. 看门狗定时器功能5. Endinit Functions5.1 Password Access to WDTxCON05.1.1 Static Password5.1.2 Automatic Password Sequencing 5.2 Check Access to WDTxCON05.3 Modify Access to WDTx…

Vue.js组件开发详解

Vue.js组件开发详解 Vue.js 是一个用于构建用户界面的渐进式框架&#xff0c;其核心思想是通过数据驱动视图的变化&#xff0c;同时提供了一系列强大的工具来帮助开发者高效地开发复杂的单页应用。在 Vue.js 中&#xff0c;组件是构建复杂应用的基本单元&#xff0c;通过组件化…

ansible学习

ansible学习 介绍 Ansible是一个基于Python开发的自动化运维工具&#xff0c;它集合了众多运维工具&#xff08;如puppet、cfengine、chef、func、fabric&#xff09;的优点&#xff0c;实现了批量系统配置、批量程序部署、批量运行命令等功能。 前置环境准备&#xff1a; …

【数据结构】什么是哈希表(散列表)?

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 &#x1f4cc;哈希表的概念 &#x1f4cc;哈希函数的构造方法 &#x1f38f;直接定址法 &#x1f38f;除留余数法 &#x1f38f;平方取中法 &#x1f38f;折叠法 &#x…

java往word中添加水印,往excel中添加图片

通过aspose-words往word中添加水印 1、添加依赖 <dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>15.8.0</version><scope>system</scope><systemPath>${project.bas…

Python水循环标准化对比算法实现

&#x1f3af;要点 算法区分不同水循环数据类型&#xff1a;地下水、河水、降水、气温和其他&#xff0c;并使用相应标准化降水指数、标准化地下水指数、标准化河流水位指数和标准化降水蒸散指数。绘制和计算特定的时间序列比较统计学相关性。使用相关矩阵可视化集水区和显示空…

使用 Python 遍历文件夹

要解决这个问题&#xff0c;使用 Python 的标准库可以很好地完成。我们要做的是遍历目录树&#xff0c;找到所有的 text 文件&#xff0c;读取内容&#xff0c;处理空行和空格&#xff0c;并将处理后的内容合并到一个新的文件中。 整体思路&#xff1a; 遍历子目录&#xff1…

Stream流的终结方法(二)——collect

1.Stream流的终结方法 2. collect方法 collect方法用于收集流中的数据放到集合中去&#xff0c;可以将流中的数据放到List&#xff0c;Set&#xff0c;Map集合中 2.1 将流中的数据收集到List集合中 package com.njau.d10_my_stream;import java.util.*; import java.util.f…