Vue3.0自定义指令directive:VOA模式

2023-11-02 15:20

本文主要是介绍Vue3.0自定义指令directive:VOA模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

什么是指令

vue官方提供很多指令,如:v-model,v-show,v-if,v-if等,他们都以v-开头。当这些指令不能满足我们实际开发需求时,我们还可以自定义指令。自定义指令主要分为全局自定义指令和局部自定义指令

全局自定义指令

在main.js中写全局自定义指令

案列:

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'var app=createApp(App)//用的时候需要在mydir前面添加一个v- 例如<div v-mydir>
app.directive("mydir",{created(el,binding,vonde,prevVnode){//在绑定元素attribute前,或者事件监听器应用前调用},beforeMount(el,binding,vonde,prevVnode){//在元素被插入到dom前被调用},mounted(el,binding,vonde,prevVnode){//在绑定元素父组件,及它自己的所有子节点都挂载完成后调用//el表示指令所绑定组件的元素//binding表示指令所传递的值:v-mydir="{name:name,age:19}"el.style.background="red";console.log("mounted:el",el);console.log("mounted:binding",binding.value);console.log("mounted:vonde",vonde);console.log("mounted:prevVnode",prevVnode);},beforeUpdate(el,binding,vonde,prevVnode){//绑定元素的父组件更新前调用console.log("beforeUpdate:el",el);console.log("beforeUpdate:binding",binding.value);console.log("beforeUpdate:vonde",vonde);console.log("beforeUpdate:prevVnode",prevVnode);},updated(el,binding,vonde,prevVnode){//在绑定元素父组件,及它自己的所有子节点都更新后调用console.log("updated:el",el);console.log("updated:binding",binding.value);console.log("updated:vonde",vonde);console.log("updated:prevVnode",prevVnode);},beforeUnmount(el,binding,vonde,prevVnode){//绑定元素的父组件卸载前被调用},unmounted(el,binding,vonde,prevVnode){//绑定元素的父组件卸载后被调用}});
app.mount("#app")

局部指令

案列:

<template><button @click="myClick">点我</button><div v-mydir="mystyle">中华人民共和国</div><div v-mydir2="mystyle">中华人民共和国 </div>
</template>
<script >
export default {inheritAttrs: false,data() {return {mystyle: { color: 'red', background: 'yellow' }}},methods: {myClick() {this.mystyle = { color: 'red', background: 'gray' }}},directives: {//自定义常用钩子就是mounted和updated两个,其他用的很少,所以就不演示了//自定义个mydir的指令,用的时候前面加v-  如:v-mydirmydir: {mounted(el, binding, vonde, prevVnode) {//在绑定元素父组件,及它自己的所有子节点都挂载完成后调用//el表示指令所绑定组件的元素//binding表示指令所传递的值:v-mydir="{name:name,age:19}"el.style.color = binding.value.colorel.style.background = binding.value.background},updated(el, binding, vonde, prevVnode) {//在绑定元素父组件,及它自己的所有子节点都更新后调用el.style.color = binding.value.colorel.style.background = binding.value.background},},//因为平常自定义指令的时候基本上只用到mounted与updated两个钩子函数,所以这两个函数可以简写成如下://简写方式定义一个名称为mydir2的指令(直接改成函数的写法即可)mydir2(el, binding) {el.style.color = binding.value.colorel.style.background = binding.value.background}}
}
</script>

这篇关于Vue3.0自定义指令directive:VOA模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/331524

相关文章

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

SpringBoot 自定义消息转换器使用详解

《SpringBoot自定义消息转换器使用详解》本文详细介绍了SpringBoot消息转换器的知识,并通过案例操作演示了如何进行自定义消息转换器的定制开发和使用,感兴趣的朋友一起看看吧... 目录一、前言二、SpringBoot 内容协商介绍2.1 什么是内容协商2.2 内容协商机制深入理解2.2.1 内容

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义