返回顶部
首页 > 资讯 > 精选 >Vue组件中的自定义事件源码分析
  • 733
分享到

Vue组件中的自定义事件源码分析

2023-06-29 21:06:48 733人浏览 泡泡鱼
摘要

这篇文章主要介绍“Vue组件中的自定义事件源码分析”,在日常操作中,相信很多人在Vue组件中的自定义事件源码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue组件中的自定义事件源码分析”的疑惑有所帮助!

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

组件的自定义事件是一种组件间的通信方式,它适用于子组件向父组件传递数据或行为

原理图

Vue组件中的自定义事件源码分析

组件的自定义事件注意点:

  • 组件的自定义事件实现的就是子组件向父组件通信的功能,所以,自定义事件的绑定动作需要在父组件中完成

  • 组件的自定义事件的触发动作需要在子组件中完成,给谁绑定的事件,就找谁触发

在了解组件的自定义事件之前,我们也了解过propsprops也能实现子组件向父组件通信,接下来,我将从props的方式过渡到组件的自定义事件,以便大家能够更好的理解组件的自定义事件,也可以对比这两种方式存在的差异和相似之处

通过props实现组件间通信

App.vue中:

<!-- 通过父组件给子组件传递函数类型的props实现:子给父传递数据 --><TestA :getName="getName"/>......<script>import TestA from './components/TestA'export default {name:'App',components:{TestA},data(){return{msg:'你好呀'}},methods:{getName(name){console.log('App组件收到了数据', name)},},}</script>

代码片段中getName()方法中的name参数用于接收子组件传递过来的参数

TestA.vue:

<!--通过点击事件传递数据--><button @click="sendName">将姓名发送给App组件</button>......<script>export default {    name:'TestA',    //接收父组件传递过来的props    props:["getName"],    data(){        return{            name:'路飞',            age:18        }    },    methods:{        sendName(){            //点击按钮后,触发此方法,传递name给父组件            this.getName(this.name)        }    }}</script>

以上是用props实现的子组件向父组件传递数据

效果图如下:

页面初始化效果:

Vue组件中的自定义事件源码分析

点击按钮后:

Vue组件中的自定义事件源码分析

通过图上可以看出,当点击按钮之后,控制台输出了父组件收到的数据,子组件通过props的方式向父组件传递了数据

通过组件的自定义事件实现组件间通信

首先第一步,就是要给组件绑定一个自定义事件,文章开始就说,绑定自定义事件是在父组件中完成的:

Vue组件中的自定义事件源码分析

其次,在子组件中,需要对自定义事件进行触发,完成组件自定义事件通信:

Vue组件中的自定义事件源码分析

效果图如下:

页面初始化效果:

Vue组件中的自定义事件源码分析

点击按钮后:

Vue组件中的自定义事件源码分析

通过图上可以看出,当点击按之后,控制台输出了父组件收到的数据。

通过以上两种通信方式,我们可以发现,子组件通过props方式向父组件传递数据,前提是父组件要给子组件传递一个回调函数,子组件接收之后,才能向父组件传递数据,而组件的自定义事件只需调用 $emit 方法对指定自定义事件进行触发,即可向父组件传递数据。

组件自定义事件其他知识点

自定义组件绑定的第二种方式

App.vue:

<template><div class="app"><h2>{{msg}}</h2><!-- 通过父组件给子组件传递函数类型的props实现:子给父传递数据 --><TestA :getName="getName"/><!-- 通过父组件给子组件绑定一个自定义事件实现:子给父传递数据 -->    <!--方法二--><TestB ref="testb"/></div></template><script>import TestA from './components/TestA'import TestB from './components/TestB'export default {name:'App',components:{TestA, TestB},data(){return{msg:'你好呀'}},methods:{getName(name){console.log('我收到了数据', name)},send(name){console.log("send被调用了", name)}},mounted(){this.$refs.testb.$on('demo', this.send);}}</script><style scoped>.app{background-color: rgb(162, 255, 139);padding: 15px;}</style>

通过ref属性拿到TestB组件组件的实例对象(vc),在组件挂载完成之后(mounted)使用this.$refs.组件名.$on('自定义事件名', 回调函数)完成对子组件自定义事件的绑定,同样也能实现效果。

而且,使用这种方式比较灵活,能完成一些操作,比如一次性自定义事件,延迟,判断等等。

一次性自定义事件

v-on:事件名.once="XXXX或者this.$refs.student.$once("事件名", 事件内容)

自定义事件的解绑

当我们使用完自定义事件后,可以解绑自定义事件,这样做的好处是,尽量降低对程序性能的占用,提高程序运行的效率

自定义的解绑动作也是在子组件中进行,简单来说也就是,给谁绑定的就找谁解绑

TestB中

<template>  <div>      <h3>籍贯:{{native}}</h3>      <h3>详细地址:{{adress}}</h3>      <button @click="sendNative">点击触发自定义事件</button>      <button @click="noBand">解绑自定义事件</button>  </div></template><script>export default {    name:'TestB',    data(){        return{            native:'东海',            adress:'东海风车村'        }    },    methods:{        sendNative(){            this.$emit('demo',this.native)        },        //解绑demo自定义事件        noBand(){            this.$off('demo');        }    }    }</script><style scoped>div{    background-color: aquamarine;    padding: 15px;    margin-top: 5px;}</style>

还有一个点就是,假若有很多自定义事件需要解绑,那可以这么写:

{方法体内    this.$off();}

直接不用传递任何参数,这样写的话,只要是给此组件绑定的任何自定义事件都会解绑

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

--结束END--

本文标题: Vue组件中的自定义事件源码分析

本文链接: https://lsjlt.com/news/326455.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Vue组件中的自定义事件源码分析
    这篇文章主要介绍“Vue组件中的自定义事件源码分析”,在日常操作中,相信很多人在Vue组件中的自定义事件源码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue组件中的自定义事件源码分析”的疑惑有所帮助!...
    99+
    2023-06-29
  • Vue组件中的自定义事件是什么
    小编给大家分享一下Vue组件中的自定义事件是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!主要介绍组件的自定义事件的概念,使用等。何为组件自定义事件:组件自定...
    99+
    2023-06-29
  • Vue之组件的自定义事件详解
    目录总结 <template> <div > <h2>{{msg}}</h2> <!-- 通过父组件给...
    99+
    2024-04-02
  • 如何理解Vue中组件的自定义事件
    本篇文章为大家展示了如何理解Vue中组件的自定义事件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。<template>  <div > ...
    99+
    2023-06-25
  • 一文浅析Vue组件的自定义事件和全局事件总线
    首先在父组件内写一个自定义组件(若想让自定义事件只能触发一次,可以使用once修饰符,或$once方法) // 在父组件内自定义个事件 getMyStudent(name) { console.log(&quo...
    99+
    2023-05-14
    Vue 组件
  • Vue组件中的自定义事件你了解多少
    主要介绍组件的自定义事件的概念,使用等。 何为组件自定义事件: 组件自定义事件是一种组件间的通信方式,方向是 子组件====>父组件。使用场景:A是子组件,B是父组件,如果要把...
    99+
    2024-04-02
  • Vue中怎么自定义事件
    本篇文章给大家分享的是有关Vue中怎么自定义事件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。事件绑定每个 Vue 实例都实现了事件接口 (E...
    99+
    2024-04-02
  • vue如何给自定义的组件绑定点击事件
    目录给自定义的组件绑定点击事件给自定义组件添加单击事件给自定义的组件绑定点击事件 在做项目中我们往往会封装许多的组件,来减少代码的重复性,提高代码的可利用性,有时候也会给组件绑定事件...
    99+
    2024-04-02
  • vue怎么给自定义的组件绑定点击事件
    这篇文章主要介绍“vue怎么给自定义的组件绑定点击事件”,在日常操作中,相信很多人在vue怎么给自定义的组件绑定点击事件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue怎么给自定义的组件绑定点击事件”的疑...
    99+
    2023-06-30
  • vue事件修饰符源码分析
    本篇内容主要讲解“vue事件修饰符源码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue事件修饰符源码分析”吧!在项目开发中遇到了vue的键盘事件,以下是项目的代码片段:<div c...
    99+
    2023-07-05
  • VUE 自定义事件:赋予组件自由表达的艺术
    ...
    99+
    2024-04-02
  • Flutter源码分析之自定义控件(RenderBox)指南
    目录前言RenderObject 类继承层级解析RenderBox叶节点与父节点控件的测量与布局performResize 和 performLayoutrelayoutBounda...
    99+
    2024-04-02
  • vue自定义keepalive组件的问题解析
    目录vue自定义keepalive组件为什么会出现这种情况呢如何解决这个问题呢问题知道了怎么解决呢思路有了撸代码如何使用主题说完了,整点其他的vue自定义keepalive组件 前一...
    99+
    2024-04-02
  • angular4自定义组件的示例分析
    这篇文章主要为大家展示了“angular4自定义组件的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“angular4自定义组件的示例分析”这篇文章吧。在...
    99+
    2024-04-02
  • Angular4.x Event中DOM事件和自定义事件的示例分析
    这篇文章给大家分享的是有关Angular4.x Event中DOM事件和自定义事件的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Angular组件和DOM元素通过事件与...
    99+
    2024-04-02
  • VUE 自定义事件:通往组件协作的新天地
    ...
    99+
    2024-04-02
  • Vue组件的自定义事件和全局事件总线怎么使用
    这篇“Vue组件的自定义事件和全局事件总线怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue组件的自定义事件和全局...
    99+
    2023-07-05
  • 一文详解Vue-组件自定义事件(绑定和解绑)
    目录组件自定义事件(绑定)1 编写案例2 props实现3 自定义事件实现方式14 自定义事件实现方式25 只能触发一次事件6 多个参数传递组件自定义事件(解绑)1 解绑一个事件2 ...
    99+
    2023-05-18
    Vue-组件自定义事件 Vue-组件自定义 Vue-组件
  • Android编程中自定义组件的示例分析
    这篇文章主要介绍了Android编程中自定义组件的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Android是什么Android是一种基于Linux内核的自由及开放...
    99+
    2023-05-31
    android
  • Android自定义组件:1、什么是自定义组件、自定义组件的方式、定义自定义属性
    声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!! 目录 一、前言 二、什么是自定义组件 三、自定义组件的方式 1、组合现有组件 2、在某...
    99+
    2022-06-06
    属性 自定义属性 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作