一、vue3通过全局自定义指令来实现自动获得焦点(setup组合式api)
- 创建一个utils文件夹
- 在utils文件夹中创建focus.js文件
- 写一个函数传入app并且导出
export default function directiveFocus(app) {
app.directive("focus", {
mounted(el) {
el?.focus();
},
});
}
- 在utils文件夹中创建一个index.js文件夹将自定义指令进行统一管理
- 在indexjs引入focus指令,放到directives函数中,该函数也传入app,给每一个指令传app,并且暴露
import directFocus from "./focus";
export default function directive(app) {
directFocus(app);
}
- 在main.js,中引入第二步的index文件并目用use0使用。use会自动传入app参数的,内部做了这个操作
import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import directives from "@/utils/index";
createApp(App).use(store).use(router).use(directives).mount("#app");
二、vue3通过局部自定义指令实现文本框自动获得焦点(setup组合式api)

const VFocuss = {
mounted(el) {
el?.focus()
}
}
vue2使用全局自定义指令实现文本框自动获得焦点
1. 全局方法一 直接在main.js中注册 但是这样代码比较臃肿 不好维护
Vue.directive("focus", {
inserted: function (el) {
el.focus();
},
});
1. 全局方法二 直接在main.js中注册 但是这样代码比较臃肿 不好维护
- 创建一个utils文件夹
- 在utils文件夹中创建一个focus.js文件
import Vue from "vue";
Vue.directive("focus", {
inserted: function (el) {
el.focus();
},
});
import focus from "./focus";
const directives = {
focus,
};
export default {
install(Vue) {
Object.keys(directives).forEach((key) => {
Vue.directive(key, directives[key]);
});
},
};
import Directives from "@/utils/index";
Vue.use(Directives);
vue2使用局部自定义指令实现文本框自动获得焦点
directives: {
focus: {
inserted: function (el) {
el.focus()
}
}
}