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>
相关推荐
tager5 分钟前
还在为跨框架的微信表情包烦恼?我写了个通用的,拿去吧!🚀
前端·vue.js·react.js
陈随易10 分钟前
一段时间没写文章了,花了10天放了个屁
前端·后端·程序员
Codebee16 分钟前
OneCode基础组件介绍——树形组件(Tree)
前端·编程语言
Cheishire_Cat17 分钟前
AI Coding宝藏组合:Cursor + Cloudbase-AI-Toolkit 开发游戏实战
前端
audience27 分钟前
uni-app运行环境版本和编译器版本不一致的问题
前端
零者29 分钟前
深度解析:React Native Android 上“调试JS”按钮失效的背后原因与修复
前端
前端付豪29 分钟前
Google Ads 广告系统排序与实时竞价架构揭秘
前端·后端·架构
邢行行29 分钟前
NPM 核心知识点:一份清晰易懂的复习指南
前端
颜漠笑年29 分钟前
看看DeepSeek是如何实现前端日历组件的?
前端·html·代码规范
BillKu30 分钟前
【前后前】导入Excel文件闭环模型:Vue3前端上传Excel文件,【Java后端接收、解析、返回数据】,Vue3前端接收展示数据
java·前端·excel