Vue学习记录之十三 自定义指令directive

devtools/2024/10/25 13:16:03/

一、自定义指令的方法

Vue中有v-if、v-for、v-show、v-model等一些内置指令,其实我们也可以通过directive来自定义组件,但是他属于破坏性的更新。

必须以vNameOfDirective 的形式来命名本地自定义指令,以使得他们可以在模版中直接使用, 标签名称:v-NameofDirective

定义格式如:

//必须v开头,后面跟着一个对象
const vMove:Directive = {//限制类型为Directive....
}
`模版中使用: v-Move="{传递的参数}"`

二、自定义指令初探及参数的获取

Vue3 指令的钩子函数:

  • created: 元素初始化的时候
  • beforeMount: 指令绑定到元素后调用只调用一次
  • mounted: 元素插入父级dom调用
  • beforeUpdate: 元素被更新之前调用
  • update: 这个周期方法被移除改用updated
  • beforeUnmount: 在元素被移除前调用
  • unmounted: 指令被移除后调用只调用一次
<template><div><button>切换</button><!--使用自定义指令:v-move, 还可以自定参数aaa,自定义修饰符 lvmanba --><A v-moves:aaa.lvmanba="{background:'red'}"></A></div>
</template><script setup lang='ts'>javascript">
import { ref,reactive,type Directive} from 'vue'
import A from './components/A.vue'
//自定义一个vMove指令,类型为Directive(这个需要引入),并获取参数,在生命周期的每个阶段(钩子函数)都可以获取。
const vMoves: Directive = {created: (...args:Array<any>) => { //...解构之后编程了一个数组console.log("初始化====>created");console.log(args)},beforeMount() {// 在元素上做些操作console.log("悬挂之前=======>beforeMount");},mounted() {console.log("悬挂完成======>mounted");},beforeUpdate() {console.log("更新之前beforeUpdate");},updated() {console.log("更新结束updated");},beforeUnmount() { console.log("======>卸载之前beforeUnmount");},unmounted() {console.log("======>卸载完成unmounted");}
}
</script>
<style scoped></style>

获取的参数格式如下(并获取参数,在生命周期的每个阶段(钩子函数)都可以获取):4个参数
在这里插入图片描述
在这里插入图片描述
生命周期钩子参数详解:
第一个参数(div.A):(el) 当前绑定的DOM 元素 【类型:HTMLElement】
第二个参数 :传递的全部信息【类型:DirectiveBing】
1(arg)、传递的参数
2(dir)、当前这个组件的实例(一个对象,在注册指令时作为参数传递)。
3(instance): 使用指令的组件实例
4(modifiers): 包含修饰符(如果有的话) 的对象。
5(oldValue):先前的值,仅在 beforeUpdate 和 updated 中可用。
6(value): 传递过来的值(传递给指令的值)。
7(object):
第三个参数:当前元素的虚拟DOM 也就是Vnode
第四个参数:null (prevNode 上一个虚拟节点,仅在 beforeUpdate 和 updated 钩子中可用 )

三、根据参数可以定制我们指令的功能

我们在实际使用一般使用 mounted、updated 和 unmounted 这三个钩子。

<template><div><button>切换</button><A v-moves:aaa.lvmanba="{background:'red'}"></A></div>
</template>
<script setup lang='ts'>javascript">
import {

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

相关文章

Sqlite3 操作笔记

一、 数据格式 支持数据格式 一般数据采用的固定的静态数据类型&#xff0c;而SQLite采用的是动态数据类型&#xff0c;会根据存入值自动判断。SQLite具有以下五种数据类型&#xff1a; 1.NULL&#xff1a;空值。 2.INTEGER&#xff1a;带符号的整型&#xff0c;具体取决有存…

智创 AI 新视界 -- AIGC 背后的深度学习魔法:从原理到实践

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

AI劳动力崛起:人将面临失业危机?

场景 第一眼看到这个网站的时候&#xff0c;AI员工官网&#xff08;好像是部署在美国&#xff09;&#xff0c;我觉得很好奇&#xff0c;真的可以让AI替代人类完成工作吗&#xff1f;替代到什么程度呢&#xff1f;能以自然语言直接驱动吗&#xff1f; 正好手上在做爬虫项目&am…

深度学习中的注意力机制:从基础到应用

深度学习中的注意力机制&#xff1a;从基础到应用 前言1. 注意力机制的起源2. 注意力机制的基本原理3. 注意力机制的发展3.1 自注意力机制&#xff08;Self-Attention&#xff09;3.2 多头注意力机制&#xff08;Multi-Head Attention&#xff09; 4. 注意力机制的代码实现5. 注…

MoCoOp: Mixture of Prompt Learning for Vision Language Models

文章汇总 当前的问题 1)数据集风格变化。 如图1所示&#xff0c;对于一个数据集&#xff0c;单个软提示可能不足以捕获数据中呈现的各种样式。同一数据集中的不同实例可能与不同的提示符兼容。因此&#xff0c;更**自然的做法是使用多个提示来充分表示这些变化**。 2)过拟合…

洞察数据之美:用可视化探索销售与温度的关系

目录 数据可视化1.气温数据可视化图片展示将最高和最低气温合并绘制折线图&#xff1a;将最高和最低气温合并绘制散点图&#xff1a; 2.销售数据可视化几种常见的销售数据可视化方法及其适用场景&#xff1a;图片展示通过热力图和堆叠柱状图的直观展示&#xff0c;可以得出以下…

Java爬虫:API数据界的“宝藏猎人”

亲爱的代码探险家们&#xff0c;今天咱们不聊那些让人头秃的bug&#xff0c;也不谈那些让人眼花的架构图。咱们来聊聊那些在代码世界里寻找宝藏的“宝藏猎人”——Java爬虫。 Java爬虫&#xff1a;API数据界的“宝藏猎人” 想象一下&#xff0c;你在代码的世界里&#xff0c;遇…

【c++ gtest】使用谷歌提供的gtest和抖音豆包提供的AI大模型来对代码中的函数进行测试

【c gtest】使用谷歌提供的gtest和抖音豆包提供的AI大模型来对代码中的函数进行测试 下载谷歌提供的c测试库在VsCode中安装抖音AI大模型找到c项目文件夹&#xff0c;使用VsCode和VS进行双开生成gtest代码进行c单例测试 下载谷歌提供的c测试库 在谷歌浏览器搜索github gtest, 第…