首页 > 其他分享 >Vue 自定义指令实践

Vue 自定义指令实践

时间:2023-05-18 22:56:05浏览次数:48  
标签:el Vue 自定义 prevVnode binding 指令 组件

Vue自定义指令

  1. 一个自定义指令由一个包含类似组件生命周期钩子的对象来定义。钩子函数会接收到指令所绑定元素作为其参数。
  2. 在 <script setup> 中,任何以 v 开头的驼峰式命名的变量都可以被用作一个自定义指令。eg:  在上面的例子中,vFocus 即可以在模板中以 v-focus 的形式使用。

指令对象的生命周期钩子函数:

 1 const myDirective = {
 2   // 在绑定元素的 attribute 前
 3   // 或事件监听器应用前调用
 4   created(el, binding, vnode, prevVnode) {
 5     // 下面会介绍各个参数的细节
 6   },
 7   // 在元素被插入到 DOM 前调用
 8   beforeMount(el, binding, vnode, prevVnode) {},
 9   // 在绑定元素的父组件
10   // 及他自己的所有子节点都挂载完成后调用
11   mounted(el, binding, vnode, prevVnode) {},
12   // 绑定元素的父组件更新前调用
13   beforeUpdate(el, binding, vnode, prevVnode) {},
14   // 在绑定元素的父组件
15   // 及他自己的所有子节点都更新后调用
16   updated(el, binding, vnode, prevVnode) {},
17   // 绑定元素的父组件卸载前调用
18   beforeUnmount(el, binding, vnode, prevVnode) {},
19   // 绑定元素的父组件卸载后调用
20   unmounted(el, binding, vnode, prevVnode) {}
21 }

自定义指令的简化形式: 当仅仅需要在 mounted 和 updated 上实现相同的行为,除此之外并不需要其他钩子。这种情况下我们可以直接用一个函数来定义指令:

<div v-color="red"></div>
1 app.directive('color', (el, binding) => {
2   // 这会在 `mounted` 和 `updated` 时都调用
3   // 这里可以拿到上述的定义的颜色值 red
4   el.style.color = binding.value
5 })

自定义指令同时也可以接收 对象字面量 和 任何合法的JavaScript 表达式。

 <div v-demo="{ color: 'white', text: 'hello!' }"></div> 

1 app.directive('demo', (el, binding) => {
2   console.log(binding.value.color) // => "white"
3   console.log(binding.value.text) // => "hello!"
4 })

在组件上使用自定义指令:不建议 可能会出现未知的错误存在。

  1. 当在组件上使用自定义指令时,它会始终应用于组件的根节点,和透传 attributes 类似。
  2.  在组件上使用自定义指令是 应用于 组件模版的根节点,但如果组件是一个存在多个根节点的组件的话 可能会出现未知的错误。因此不建议在组件上使用自定义组件。

标签:el,Vue,自定义,prevVnode,binding,指令,组件
From: https://www.cnblogs.com/taue997/p/17413543.html

相关文章

  • Vue Ant Design Pro 中定制主题
    VueAntDesignPro中定制主题需求定制主题去除“正在切换主题”过渡效果 需求项目要求使用草绿色的主题色并且去除如下的loading效果定制主题这里可以参照AntDesignProofVue官方文档哦定制方式是使用 less 的modifyVars的方式进行覆盖变量官方文档......
  • 在Vue2项目中遇到的问题汇总
    1问题1:Proxyerror:Couldnotproxyrequest/studentsfromlocalhost:8080tohttp://localhost:5000/.SeehtProxyerror:Couldnotproxyrequest/studentsfromlocalhost:8080tohttp://localhost:5000/.Seeht终端报错:浏览器报错这个里面给的文件没有打开,打......
  • \033[0m 有什么用——python 输出颜色自定义
    "\033"是什么?\033或\33相当于python中的关键字,可以改变输出字体的属性,具体参考ECMA-48标准《ControlFunctionsforCodedCharacterSets》参数有什么?字颜色:30-----------3730:黑31:红32:绿33:黄34:蓝色35:紫色36:深绿37:白色字背景颜色范围:40----47......
  • 折线图 最大值显示白点,默认显示tooltip框框,自定义tooltip
    效果图: 代码如下:(直接放整个vue文件了,省事)<template><div><divstyle="width:406px;height:220px"id="zz_r_two1"></div><divclass="xsTitle"><divclass="fang"></div>......
  • HTML属性 分为两种Property 固有属性Attribute 自定义属性
    HTML属性 分为两种Property固有属性Attribute自定义属性。固有属性就是浏览器给默认给html标签绑定上的属性。 操作固有属性固有属性可以通过对象.属性名这样方式来设置和获取值。什么是自定义属性自定义属性就是用户自己定义,在固有属性列表中没有的属性。获取自定义......
  • Vue3迎来升级,全面助力企业数字化转型
    近年来,随着“互联网+”的推进与应用普及,数字化转型已经成为企业发展的必备选项。低代码开发平台的迅速普及和广泛应用,也为企业数字化的转型提供了支撑技术。JNPF快速开发平台深度集成java+.net 6 双技术引擎,具备易维护、便部署、高集成、高效率等多方面特性,面向企业项目提供开......
  • git 常用指令
    gitbash常用指令:分支:创建新下分支                                    gitbranchbranchName切换分支                                           gitcheckoutbranchName提交......
  • VUE项目
    一、创建vue工程使用vue工程之前,确保已经安装了nodejs,在命令行中输入node-v可以看到node版本即可。nodejs官网下载地址http://nodejs.cn/download/current/安装vue#在cmd或pycharm的下方Terminal中执行命令npmconfigsetregistryhttps://registry.npm.taobao.org#......
  • vue中pdf预览,报错(Cannot read properties of undefined (reading ‘catch‘))解决
    1、在node_modules中找到vue-pdf,src下的pdfjsWrapper.jsif(pdfRender!==null){if(canceling)return;canceling=true;pdfRender.cancel().catch(function(err){emitEvent('error',err);});return;}修改为if(pdf......
  • VUE基础
    一、基础vue和jquery一样,是前端的js库在html文件中使用需导入vue.js:<scriptsrc="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>{{xx}}来表示取某个变量xx的值二、vue指令v-model:双向数据绑定用来在input、select、textarea、checkbox、radio等表单控......