vue3的自定义指令

Vue3中自定义指令介绍及用法

自定义指令是什么

在开发Vue项目时,大多数都会使用到Vue内置的一些指令,如v-modelv-ifv-show等,这些呢,就叫做指令,而我们自己呢也可以随意创建指令,就叫做自定义指令!

自定义指令钩子函数的参数

el:指令所绑定的元素,可以直接操作DOM。 ● binding:是一个对象,包含该指令的所有信息。

binding 包含的属性具体的分别为:

● arg自定义指令的参数名。

● value自定义指令绑定的值。

● oldValue指令绑定的前一个值。

● dir被执行的钩子函数

● modifiers:一个包含修饰符的对象。

如何创建自定义指令

简单来说,一般分为两种,局部指令全局指令,任何以v开头的驼峰式命名的变量都可以被创建为一个自定义指令,然后在模板中使用,下面示例:

  1. 在局部创建使用:修改颜色的指令
js 复制代码
<template>
    <div>
        // 这里使用指令
        <h2 v-color="'#f00'">这是改变的内容</h2>
    </div>
</template>
    
<script setup lang='ts'>
    const vColor = {
        mounted(el: any, binding: any) {
            el.style.color = binding.value;
        },
    }
</script>
  • 效果
  1. 在全局创建:main.js文件内创建,这样所有组件内都可以使用该指令
ts 复制代码
// main.js 文件
import '../src/assets/main.css'

import { createApp } from 'vue'
import { createPinia } from 'pinia'

import App from './App.vue'
import router from './router'

const app = createApp(App)

// 定义的指令
app.directive('color', {
    mounted(el, binding) {
        el.style.color = binding.value
    }
})

app.use(router)
app.mount('#app')
ts 复制代码
<template>
    <div>
        // 直接在任意组件中使用即可,无需引入
        <h2 v-color="'#00f'">全局改变的内容</h2>
    </div>
</template>

效果:

自定义指令的八个生命周期和组件的生命周期类似

js 复制代码
    created() {
        
    },
    beforeMount() {
        
    },
    //dom渲染之后,挂载阶段,教为常用
    mounted(el, binding) {
        console.log(el, binding);
    },
    beforeUnmount() {
        
    },
    //dom节点修改后的阶段,比较常用
    updated(el, binding) {
        console.log(el, binding);
    },
    beforeUpdate() {
        
    },
    beforeDestroy() {
        
    },
    destroyed() {
        
    },

> _ < 每日一签

美好的一天,上帝不会就这样给你,需要自己去创造。

相关推荐
我是小路路呀23 分钟前
element级联选择器:已选中一个二级节点,随后又点击了一个一级节点(仅浏览,未确认选择),此时下拉框失去焦点并关闭
javascript·vue.js·elementui
程序员爱钓鱼29 分钟前
Node.js 编程实战:文件读写操作
前端·后端·node.js
PineappleCoder36 分钟前
工程化必备!SVG 雪碧图的最佳实践:ID 引用 + 缓存友好,无需手动算坐标
前端·性能优化
JIngJaneIL1 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
敲敲了个代码1 小时前
隐式类型转换:哈基米 == 猫 ? true :false
开发语言·前端·javascript·学习·面试·web
澄江静如练_1 小时前
列表渲染(v-for)
前端·javascript·vue.js
JustHappy2 小时前
「chrome extensions🛠️」我写了一个超级简单的浏览器插件Vue开发模板
前端·javascript·github
Loo国昌2 小时前
Vue 3 前端工程化:架构、核心原理与生产实践
前端·vue.js·架构
sg_knight2 小时前
拥抱未来:ECMAScript Modules (ESM) 深度解析
开发语言·前端·javascript·vue·ecmascript·web·esm