文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

vue3自定义指令的方法是什么

2023-07-04 15:59

关注

这篇文章主要介绍“vue3自定义指令的方法是什么”,在日常操作中,相信很多人在vue3自定义指令的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue3自定义指令的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. 什么是自定义指令

vue 官方提供了 v-for、v-model、v-if 等常用的内置指令。除此之外 vue 还允许开发者自定义指令。

vue 中的自定义指令分为两类,分别是:

2. 声明私有自定义指令的语法

在每个 vue 组件中,可以在 directives 节点下声明私有自定义指令。示例代码如下:

<script>export default {  directives: {      // 自定义私有指令focus,在使用的时候要用 v-focus 。    focus: {      mounted(el) {        el.focus()      },    },  },}</script>

3. 使用自定义指令

在使用自定义指令时,需要加上 v- 前缀。示例代码如下:

<!-- 声明自定义私有指令focus,在使用的时候要用 v-focus 。 -->    <input v-focus/>

4. 声明全局自定义指令的语法

全局共享的自定义指令需要通过“单页面应用程序的实例对象”进行声明,示例代码如下:

import { createApp } from 'vue'const app = createApp({  })// 注册(对象形式的指令)app.directive('my-directive', {  })// 注册(函数形式的指令)app.directive('my-directive', () => {  })// 得到一个已注册的指令const myDirective = app.directive('my-directive')

5. updated 函数

mounted 函数只在元素第一次插入 DOM 时被调用,当 DOM 更新时 mounted 函数不会被触发。 updated 函数会在每次 DOM 更新完成后被调用。示例代码如下:

// 声明全局自定义指令app.directive('focus', {  mounted(el) {    console.log('mounted')    el.focus()  },  updated(el) {    console.log('updated')    el.focus()  },})

注意:在 vue2 的项目中使用自定义指令时,【 mounted 要换成 bind 】【 updated 要换成 update 】

6. 函数简写

如果 mounted 和updated 函数中的逻辑完全相同,则可以简写成如下格式:

app.directive('focus', (el) => {    // 在 mounted 和 updated 都会触发这个函数方法  el.focus()})

7. 指令的参数值

在绑定指令时,可以通过“等号”的形式为指令绑定具体的参数值,示例代码如下:

// 自定义 v-color 指令app.directive('color', (el, binding) => {    // binding.value 就是通过 = 绑定的值,在传值的时候传到这 binding.value  el.style.color = binding.value})

附:下面根据自定义指令知识点衍生的一个小例子

该例子没有特别的技术难点。只是为了验证一下这两天学习的vue3部分知识点,存粹是一个练手记录~~~

//示例

<template>    <p>        改变方向:<input type="text" v-model="direction" />    </p>    <p>        改变数值:<input type="range" min="0" :max="maxNum" v-model="pinPadding" />    </p>    <p>        <button @click="reset">重置</button>    </p>    <div >        <p v-pin:[direction]="pinPadding">数据:{{pinPadding}},方向:{{direction}}</p>    </div></template><script>    import two from './components/two.vue'    import {        ref,        reactive,        defineComponent,        computed    } from 'vue'    export default ({        name: 'lycApp',        components: {            two        },        setup(prop, context) {            const direction = ref('left')            const pinPadding = ref(0)            const reset = () => {                direction.value = 'left'                pinPadding.value = 0            }            const maxNum = computed(()=>{                if(direction.value == 'right' || direction.value == 'left'){                    return 650                }else{                    return 360                }            })            return {                direction,                pinPadding,                reset,                maxNum            }        },        directives: {            pin: {                mounted(el, binding) {                    el.style.position = 'absolute'                    const s = binding.arg                    el.style[s] = binding.value + 'px'                },                updated(el, binding) {                    el.removeAttribute('style')                    el.style.position = 'absolute'                    const s = binding.arg                    el.style[s] = binding.value + 'px'                }            }        }    })</script>

到此,关于“vue3自定义指令的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯