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>
相关推荐
jktantan3 小时前
Vue keep-alive 切标签后滚动位置回顶?因为 onDeactivated 里读到的 scrollTop 是 0
前端·javascript·vue.js
总要学点什么3 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
2601_962885724 小时前
quotes 字段全解:涨跌幅、振幅、换手率的口径与单位
java·前端·spring
excel4 小时前
encodeURI 和 encodeURIComponent 有什么区别?
前端
前端精髓4 小时前
调用openrouter的免费API模型
java·前端·javascript
赛博守夜人5 小时前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
开开心心_Every5 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
networknomad5 小时前
OpenReplay:自己搭的会话回放工具,给前端排错用的
前端·其他
缓慢更新6 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
陈随易6 小时前
AI 运维服务器,安全又可靠的方法
前端·后端·程序员