在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、注册自定义指令以下实例都是实现一个输入框自动获取焦点的自定义指令。 1.1、全局自定义指令在vue2中,全局自定义指令通过 实例1:Vue2 全局自定义指令 Vue.directive('focus',{ inserted:(el)=>{ el.focus() } })
在 实例2:Vue3 全局自定义指令 //全局自定义指令 app.directive('focus',{ mounted(el){ el.focus() } }) //组件使用 <input type="text" v-focus /> 1.2、局部自定义指令在组件内部,使用 实例3:局部自定义指令 <script> //局部自定义指令 const defineDir = { focus:{ mounted(el){ el.focus() } } } export default { directives:defineDir, setup(){} } </script> 二、自定义指令中的生命周期钩子函数一个指令定义对象可以提供如下几个钩子函数(都是可选的,根据需要引入)
实例3:测试指令内生命周期函数执行 <template> <div> <input type="text" v-focus v-if="show"><br> <button @click="changStatus">{{show?'隐藏':'显示'}}</button> </div> </template> //局部自定义指令 const autoFocus = { focus:{ created(){ console.log('created'); }, beforeMount(){ console.log('beforeMount'); }, mounted(el){ console.log('mounted'); }, beforeUpdated(){ console.log('beforeUpdated') }, updated(){ console.log('updated'); }, beforeUnmount(){ console.log('beforeUnmount'); }, unmounted(){ console.log('unmounted'); } }, } import { ref } from 'vue' export default { directives:autoFocus, setup(){ const show = ref(true) return { show, changStatus(){ show.value = !show.value } } } } 通过点击按钮,我们发现创建 隐藏 然而我们添加的 此时我们把 从 vue2 升级到 vue3 ,自定义指令的生命周期钩子函数发生了改变,具体变化如下:
三、自定义指令钩子函数的参数钩子函数被赋予了以下参数:
binding 包含的属性具体的分别为:
<template> <div> <div v-fixed >定位</div> </div> </template> <script> //自定义指令动态参数 const autoFocus = { fixed:{ beforeMount(el,binding){ console.log('el',el) console.log('binding',binding) } } } export default { directives:autoFocus, setup(){ } } </script> 四、自定义指令参数自定义指令的也可以带参数,参数可以是动态的,参数可以根据组件实例数据进行实时更新。 实例4:自定义指令动态参数 <template> <div> <div v-fixed:pos="posData" style="width:100px;height:100px;background:grey">定位</div> </div> </template> <script> //自定义指令动态参数 const autoFocus = { fixed:{ beforeMount(el,binding){ el.style.position = "fixed" el.style.left = binding.value.left+'px' el.style.top = binding.value.top + 'px' } } } export default { directives:autoFocus, setup(){ const posData = { left:20, top:200 } return { posData, } } } </script> 什么时候需要自定义指令?
到此这篇关于 vue3 自定义指令详情的文章就介绍到这了,更多相关 vue3 自定义指令内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论