vue3自定义指令来实现 v-focus 功能

v-focus

在 Vue 3 中,可以通过自定义指令来实现v-focus 功能
  • 新建一个名为 focus.ts 的文件,在其中定义一个名为 focus 的自定义指令。
ts 复制代码
import type { Directive ,App} from 'vue'

const vFocus: Directive = {
   // 当元素插入到 DOM 后,自动聚焦
  mounted(el: HTMLElement) {
    console.log(el,'el');
    el.focus && el.focus()
  },
   // 当指令绑定的值更新时,重新聚焦
  updated(el: HTMLElement) {
    el.focus && el.focus()
  },
}
export const setupFocusDirective = (app: App<Element>) => {
  app.directive('focus', vFocus)
}
export default vFocus
  • 在 main.ts 中导入directive/index.ts并注册指令。
ts 复制代码
// directive/index.ts
import type { App } from 'vue'
import {setupFocusDirective} from './focus'
/**
 * 导出指令:v-xxx
 * @methods focus 聚焦元素,用法: v-focus="xxx"
 */
export const setupPermission = (app: App<Element>) => {
  setupFocusDirective(app)
}
  • vue 组件中中使用
vue 复制代码
<script setup lang="ts">
  import {ref} from "vue";
  import { ElInput } from 'element-plus'
  const value = ref<string>('我是要复制的值')
</script>

<template>
  <input v-model="value" placeholder="111" v-focus />
</template>
相关推荐
hachi03134 分钟前
Vue中input disabled时点击事件不触发怎么办?
javascript·vue.js·ecmascript
BestSongC9 分钟前
基于VUE和FastAPI的行人目标检测系统
vue.js·人工智能·yolo·目标检测·fastapi
漫天黄叶远飞21 分钟前
别再把对象当“字典”!JS 零基础也能看懂的“属性账本”拆解笔记
javascript
华仔啊23 分钟前
20个CSS实用技巧,10分钟从小白变大神!
前端·css
起名时在学Aiifox25 分钟前
Vue3 + Element Plus 表格排序实战:基于状态字段的智能排序方案
前端·javascript·vue.js·element plus
再吃一根胡萝卜29 分钟前
从 Element UI 到 Element Plus:el-table 大数据量性能为何下降了?
前端
转转技术团队32 分钟前
转转UI自动化走查方案探索
前端
yzx99101335 分钟前
基于Flask的智能语音增强系统模拟
前端·javascript·html
青衫码上行41 分钟前
【Java Web学习 | 第14篇】JavaScript(8) -正则表达式
java·前端·javascript·学习·正则表达式
我的虾分发1 小时前
虾分发是一个键打包封装APP内测分发平台
javascript