Vue自定义指令(二)

简介: Vue自定义指令(二)

一、在 main.js 文件中创建自定义指令,并绑定到 app 实例上。

// ......
const app = createApp(App);
 
// 全局自定义指令【完整写法】
app.directive("big", {
  // 绑定的元素挂载时执行
  mounted: (el, binding) => {
    console.log(el); // 绑定指令的 DOM 元素
    console.log(binding); // 绑定指令的对象
    el.innerText = binding.value * 10;
  },
  // 绑定的值更新时执行
  updated: (el, binding) => {
    console.log(el); // 绑定指令的 DOM 元素
    console.log(binding); // 绑定指令的对象
    el.innerText = binding.value * 10;
  },
});
 
// 全局自定义指令【简写】
// app.directive("big", (el, binding) => {
//   console.log(el); // 绑定指令的 DOM 元素
//   console.log(binding); // 绑定指令的对象
//   el.innerText = binding.value * 10;
// });
 
// ......
app.mount("#app");

二、在需要的页面中,直接使用即可。

<template>
  <p>当前的num值是:<span v-text="num"></span></p>
  <p>放大10倍的num值是:<span v-big="num"></span></p>
  <button @click="num++">点击num+1</button>
</template>
 
<script setup>
import { ref } from 'vue'
let num = ref(1);
</script>

效果:

自定义指令【生命周期】:

const 指令名 = {
  // 绑定的元素创建时执行
  created(el, binding) { },
  // 绑定的元素挂载前执行
  beforeMount(el, binding, vnode) { },
  // 绑定的元素挂载后执行【常用于修改 DOM 元素】
  mounted(el, binding, vnode) { },
  // 绑定的数据更新前执行
  beforeUpdate(el, binding, vnode, prevVnode) { },
  // 绑定的数据更新后执行【常用于修改绑定的数据】
  updated(el, binding, vnode, prevVnode) { },
  // 绑定的元素卸载前执行
  beforeUnmount(el, binding, vnode) { },
  // 绑定的元素卸载后执行
  unmounted(el, binding, vnode) { }
}

 

自定义指令【参数详情】:

   el: 绑定的 DOM 元素

   binding: 绑定的对象,包含以下属性。

   value: 当前值(新值)。

   oldValue: 修改前的值(旧值)。

   arg: 传递的参数。例如 v-big:foo 中的参数是 foo 。

   modifers: 修饰符对象。例如 v-big.bar 中的修饰符是 { bar: true } 。

   

   instance: 组件实例对象

   dir: 指令对象。

   vnode: 绑定的底层虚拟 DOM (新的)。

   prevNode: 修改前的底层虚拟 DOM (旧的)。

 


相关文章
|
2天前
|
数据采集 JavaScript 前端开发
Vue框架的优缺点是什么
【7月更文挑战第5天】 Vue框架:组件化开发利于重用与扩展,响应式数据绑定简化状态管理;学习曲线平缓,生态系统丰富,集成便捷,且具性能优化手段。缺点包括社区规模相对小,类型支持不足(Vue 3.x改善),路由和状态管理需额外配置,SEO支持有限。随着发展,部分缺点正被克服。
8 1
|
3天前
|
JavaScript
Vue卸载eslint的写法,单独安装eslint,单独卸载eslint
Vue卸载eslint的写法,单独安装eslint,单独卸载eslint
|
3天前
|
JavaScript
青戈大佬安装Vue,无Eslint安装版,vue2安装,vue2无eslint,最简单配置Vue安装资料
青戈大佬安装Vue,无Eslint安装版,vue2安装,vue2无eslint,最简单配置Vue安装资料
|
3天前
|
JavaScript
This dependency was not found:* vue/types/umd in ./src/router/index.jsTo install it, you can run
This dependency was not found:* vue/types/umd in ./src/router/index.jsTo install it, you can run
This dependency was not found:* vue/types/umd in ./src/router/index.jsTo install it, you can run
|
2天前
|
JavaScript 前端开发 开发工具
如何学习vue框架
【7月更文挑战第5天】 - 先学HTML/CSS/JS基础和前端工程化工具(npm, webpack, Git)。 - 从Vue官方文档学习基础,包括指令、组件、响应式系统。 - 深入研究Vue Router和Vuex,掌握路由管理和状态管理。 - 学习自定义指令和Mixins,优化性能技巧。 - 实战项目练习,加入Vue社区,阅读相关资源,提升技能。 - 关注Vue生态,持续实践和创新,以适应不断发展的框架。
6 0
|
3天前
|
缓存 JavaScript 算法
vue 性能优化
vue 性能优化
12 0
|
3天前
|
JavaScript 前端开发 程序员
Vue组件化、单文件组件以及使用vue-cli(脚手架)
Vue组件化、单文件组件以及使用vue-cli(脚手架)
16 0
|
3天前
|
JavaScript API
Vue数据动态代理机制的实现以及响应式与数据劫持
Vue数据动态代理机制的实现以及响应式与数据劫持
6 0
|
3天前
|
JavaScript 前端开发 程序员
Vue指令的使用以及自定义指令
Vue指令的使用以及自定义指令
8 0
|
3天前
|
JavaScript 前端开发 程序员
Vue2入门(安装Vue、devtools,创建Vue)以及MVVM分层思想
Vue2入门(安装Vue、devtools,创建Vue)以及MVVM分层思想
8 0