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>
相关推荐
布丁05234 分钟前
JavaScript基础(三)
开发语言·javascript·ecmascript
枣把儿15 分钟前
交互效果太单调?推荐两个动画丝滑的组件库,Vue 和 Nuxt都适用!
前端·vue.js·nuxt.js
初出茅庐的23 分钟前
uniapp - 键盘上推 踩坑
前端·vue.js·uni-app
杰哥焯逊23 分钟前
基于TS封装的高德地图JS APi2.0实用工具(包含插件类型,基础类型)...持续更新
前端·javascript·typescript
Cc_Debugger24 分钟前
element plus使用插槽方式自定义el-form-item的label
前端·javascript·vue.js
纸人特工28 分钟前
用Vue3+TypeScript手撸了一个简约的浏览器新标签页扩展
前端·vue.js
2201_7567767729 分钟前
xss-labs练习
前端·xss
快乐巅峰38 分钟前
为什么选择Elysia.js - Node.js后端框架的最佳选择
前端·后端
A了LONE39 分钟前
自定义btn按钮
java·前端·javascript
梦想CAD控件1 小时前
在线CAD实现形位公差标注(在线编辑DWG)
前端·javascript·node.js