Vue 词条目录
前端Wiki/词条/自定义指令 directive

自定义指令 directive

定义注册以 v- 开头的自定义指令,把底层 DOM 操作封装成可在模板中复用的绑定

当内置指令不够用时,自定义指令把对 DOM 的直接操作收拢成一条声明式的 v-xxx 绑定。它通过 app.directive 全局注册或 directives 选项局部注册,钩子函数 mounted、updated、unmounted 分别在元素挂载、更新、卸载时触发,第一个参数固定是绑定的 DOM 元素。

典型场景是自动聚焦输入框、权限按钮隐藏、拖拽元素等与业务无关的 DOM 交互。设计指令时尽量只做 DOM 层面的操作,不要在指令里读写响应式状态,否则会让数据流向难以追踪。指令名用 kebab-case 注册,模板里 v-focus 对应注册名 focus 才能正确解析。

JavaScript
app.directive('focus', {
  mounted(el) { el.focus(); }
});

// 模板中:<input v-focus>
// 带参数:<div v-permission="'admin'">管理后台</div>
app.directive('permission', {
  mounted(el, binding) {
    if (binding.value !== 'admin') el.remove();
  }
});
⚠ 常见误区
🔗 相关词条插值与指令事件与输入修饰符
← 返回来源章节插值与指令