网站首页 > 技术文章 正文
前言
Vue 3 中自定义指令(Custom Directives)的功能依然强大,但API相较于Vue 2有所改变,更加强调Composition API的使用方式。一个自定义指令由一个包含类似组件生命周期钩子的对象来定义。钩子函数会接收到指令所绑定元素作为其参数。
一、如何在Vue 3中创建和使用自定义指令
下面是如何在Vue 3中创建和使用自定义指令的简要指南,官方的小例子:
<script setup>
// 在模板中启用 v-focus
const vFocus = {
mounted: (el) => el.focus()
}
</script>
<template>
<input v-focus />
</template>
很简单一句话就能用了,我刚开始是没看懂的,这定义了一个函数怎么就能当指令用?测试一下,居然可行。
在
学过vue2的都知道指令是需要注册的,在没有使用
//局部注册
export default {
setup() {
/*...*/
},
directives: {
// 在模板中启用 v-focus
focus: {
/* ... */
}
}
}
// 注册一个全局自定义指令 `v-focus`,该指令用于输入框自动获取焦点
Vue.directive('focus', {
// 当绑定元素插入到DOM中时
inserted: function (el) {
// 聚焦元素
el.focus();
}
})
简化:
对于自定义指令来说,一个很常见的情况是仅仅需要在 mounted 和 updated 上实现相同的行为,除此之外并不需要其他钩子。这种情况下我们可以直接用一个函数来定义指令,如下所示:
<div v-color="color"></div>
app.directive('color', (el, binding) => {
// 这会在 `mounted` 和 `updated` 时都调用
el.style.color = binding.value
})
总结
这样,简单的自定义指令就已经学会了。
昨日种种,皆成今我,切莫思量,更莫哀。从今往后,怎么收获,怎么栽。
猜你喜欢
- 2025-01-23 自定义的拖拽式智能大屏(springboot+VUE)
- 2025-01-23 手把手教你在 Vue3 中自定义指令(vue自定义指令两种方式)
- 2025-01-23 如何实现 Vue 自定义组件中 hover 事件以及 v-model
- 2025-01-23 尝鲜 Vue3.0+Vite 自定义导航栏+弹窗组件
- 2025-01-23 VUE工具箱:定制组件的 V-MODEL(vue必备插件)
- 2025-01-23 Vue短文:如何在HTTP请求时传递自定义头部
- 2025-01-23 20 道必看的 Vue 面试题 | 原力计划
- 2025-01-23 浅析vue封装自定义插件(vue封装一个组件需要哪些步骤)
- 2025-01-23 vue自定义组件v-model几种实现方法,拿走不谢
- 2025-01-23 高质量 Vue.js 自定义美化滚动条VueScroll
- 最近发表
-
- 如何在 Linux 上安装 Java_怎么在linux中安装jdk
- Linux中tar命令打包路径相关问题_linux怎么用tar打包一个目录
- 常用linux系统常用扫描命令汇总_常用linux系统常用扫描命令汇总表
- VM下linux虚拟机新建过程(有图)_linux虚拟机创建新用户命令
- 系统小技巧:迁移通过Wubi方式安装的Ubuntu系统
- 文件系统(八):Linux JFFS2文件系统工作原理、优势与局限
- 如何利用ftrace精确跟踪特定进程调度信息
- prometheus网络监控之fping-exporter
- hyper linux的实操步骤,hyper-v批量管理工具的使用指南
- 2021年,运维工程师笔试真题(二)(附带答案)
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)