Vue3 指令详解

ops/2024/10/9 1:28:57/

一、构建指令

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/ops/122910.html

相关文章

AMD发布首个AI小语言模型:6900亿token、推测解码提速3.88倍

AMD发布了自己的首个小语言模型(SLM)&#xff0c;名为“AMD-135M”。相比于越来越庞大的大语言模型(LLM)&#xff0c;它体积小巧&#xff0c;更加灵活&#xff0c;更有针对性&#xff0c;非常适合私密性、专业性很强的企业部署。 AMD-135小模型隶属于Llama家族&#xff0c;有两…

SkyWalking 集成日志框架

logback官方配置 引入依赖 <!‐‐ apm‐toolkit‐logback‐1.x ‐‐> <dependency><groupId>org.apache.skywalking</groupId><artifactId>apm‐toolkit‐logback‐1.x</artifactId><version>8.5.0</version> </dependen…

Vue3项目开发——新闻发布管理系统(九)(完结篇)

文章目录 十一、用户信息管理1、用户基本资料管理1.1 页面设计1.2 封装接口,更新信息2、更换头像2.1 静态结构2.2 选择图片预览2.3 上传头像3、重置密码3.1 页面设计3.2 封装接口,更新密码十二、项目打包十三、系统全部源码下载十一、用户信息管理 用户信息管理包括功能:基…

APP自动化搭建与应用

APP自动化环境搭建 用于做APP端UI自动化&#xff0c;adb连接手机设备。 需要的工具java编辑器&#xff1a;jdk、Android-sdk软件开发工具组、appium的python客户端、nodes.js、夜神模拟器、apk包、uiautomatorviewer 第一步&#xff1a;安装sdk&#xff0c;里面包含建立工具bu…

算法笔记(八)——字符串

文章目录 最长公共前缀最长回文子串二进制求和字符串相乘 最长公共前缀 题目&#xff1a;最长公共前缀 思路 两两比较&#xff0c;将每两个的子串和未比较的字符串相比较&#xff1b; C代码 class Solution { public:string Common(string& s1, string& s2){int i…

ssrf学习(ctfhub靶场)

ssrf练习 目录 ssrf漏洞 漏洞形成原理&#xff08;来自网络&#xff09; 寻找ssrf漏洞&#xff0c; 靶场题目 第一题&#xff08;url探测网站下文件&#xff09; 第二关&#xff08;使用伪协议&#xff09; 关于http和file协议的理解 file协议 http协议 第三关&…

Qt系统学习篇(6)-QMainWindow

QMainWindow是一个为用户提供主窗口程序的类&#xff0c;包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget)&#xff0c;是许多应用程序的基础&#xff0c;如文本编辑器&#xff0c;图片编…

pnpm install的时候失败提示python问题

忘记是哪个依赖了&#xff0c;npm正常&#xff0c;pnpm的时候就异常&#xff0c;但是报错里python异常 解决方法&#xff1a;安装python就行 ennn免安装的python好麻烦 网上找教程安装python好麻烦&#xff0c;发现微软可以直接安装&#xff0c;就用微软的安装了 查看结果 p…