vue 的指令用于操作 dom,适用于需要直接访问 dom 的场景。注册分为全局和局部两种方式:一、全局指令在 main.js 中使用 vue.directive() 注册,如 vue.directive('focus', { inserted(el) { el.focus() }}),使所有组件都能使用 v-focus 指令;二、局部指令在组件的 directives 选项中定义,如 export default { directives: { highlight: { bind(el, binding) { el.style.backgroundcolor = binding.value } } }},仅在当前组件内可用;三、常用钩子函数包括 bind(首次绑定时触发)、inserted(元素插入父节点时触发)、update(组件更新时触发)、componentupdated(组件及子组件更新完成后触发)、unbind(解绑时触发);四、传递参数给指令可通过语法 v-example:foo.bar="10" 实现,其中 foo 是参数,.bar 是修饰符,10 是值,分别通过 binding.arg、binding.modifiers.bar 和 binding.value 获取,从而提升指令灵活性。

Vue 的指令(Directive)用来操作 DOM,适用于一些需要直接访问 DOM 的场景。虽然 Vue 是数据驱动的框架,但在某些情况下,比如自动聚焦输入框、自定义滚动行为等,指令非常有用。
注册和使用 Vue 指令其实不难,下面我们就来一步步看看怎么做。
如果你希望一个指令在所有组件中都能用,可以注册为全局指令。
立即学习“前端免费学习笔记(深入)”;
注册方式很简单,在
main.js
Vue.directive()
Vue.directive('focus', {
inserted(el) {
el.focus()
}
})这样就定义了一个叫
v-focus
注意:这里的
inserted
如果你只想在某个组件里使用特定的指令,可以在组件选项中添加
directives
比如在一个组件中写:
export default {
directives: {
highlight: {
bind(el, binding) {
el.style.backgroundColor = binding.value
}
}
}
}然后在这个组件模板中就可以使用
v-highlight="'yellow'"
这种方式的好处是避免污染全局命名空间,适合只在单个组件使用的指令。
Vue 的指令有几个生命周期钩子,常见的有以下几个:
bind
inserted
update
componentUpdated
unbind
举个例子,你想做一个“拖拽”指令,可能就需要在
bind
unbind
指令支持传参,也可以带修饰符。
例如:
<div v-example:foo.bar="10"></div>
在这个例子里:
foo
binding.arg
.bar
binding.modifiers.bar
10
binding.value
你可以根据这些信息让指令变得更灵活,比如实现一个根据方向调整位置的指令。
基本上就这些。注册指令的方式分全局和局部,使用时可以传参和加修饰符,钩子函数决定了它的行为时机。说起来不算太复杂,但细节容易忽略,特别是钩子之间的区别。
以上就是Vue的指令(directive)是如何注册和使用的?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号