Vue-组件自定义事件(绑定和解绑)

news/2024/11/25 7:29:13/

组件自定义事件(绑定)

像click,change这些都是js的内置事件,我们可以直接使用,本次我们学习自己根据需求打造全新的事件,但是js内置的是给html元素用的,本次的自定义事件是给组件用的

注意:组件上也可以绑定原生DOM事件,需要使用native修饰符,销毁组件实例也会销毁组件对应的自定义事件

下面通过案例说明

1 编写案例

如图,我有三个组件,分别是学生,学校和app,由app管理其他两个组件,这时候想给学校组件一个按钮,点击的时候会把学校名称交给app

2 props实现

通过父组件给子组件传递函数类型的props实现:子给父传递数据

我们可以子组件使用props给父组件传递,所以首先在app里面定义函数,然后通过props进行传递使用

3 自定义事件实现方式1

如果我还想继续给student一个按钮,点击的时候把学生姓名给app组件呢?这次不用props了,使用自定义事件实现

通过父组件给子组件绑定自定义事件实现:子给父传递数据

使用$emit触发组件身上的自定义事件,参数是事件名称

当然,使用@简写形式替代v-on也是可以的,我这里没有简写,事件名称和回调名称可以相同的

也是可以完成的

4 自定义事件实现方式2

除了上述的方式,还有另外一种方式可以实现,使用ref,写一个加载钩子函数,使用$on

这种写法虽然麻烦,需要写钩子函数,但是它也更加的灵活

效果都是一样的

如果验证它更加的灵活呢?比如现在有这样的一个需求,需要3秒后才能加载事件,这时候使用第一种写法就写不了,但是第二种写法就可以

5 只能触发一次事件

有的场景,我想要自定义事件触发一次后就不再触发了,这时候就不能使用 o n 这个 a p i 了,应该使用 on这个api了,应该使用 on这个api了,应该使用once

如果不是这种写法呢?也是一样的道理,在事件名称后.once即可

6 多个参数传递

自定义事件也是可以支持传递多个参数的,使用逗号拼接即可

但是一般多个参数不会这么写,而是使用es6里面的…params接收,他会把多个参数拼接成一个数组

组件自定义事件(解绑)

上面介绍了绑定自定义事件,接下来就是对应的解绑自定义事件

1 解绑一个事件

使用$off解绑,参数就是事件名称,这种写法只支持解绑一个事件

那么多个该如何操作呢?

2 解绑多个事件

比如现在有两个自定义事件

使用$off解绑,参数是一个数组,里面是参数名称

3 解绑全部事件

还有一种更加暴力的写法,使用off方法什么也不传,这便是解绑全部事件

组件的自定义事件总结

  1. 一种组件间通信的方式,适用于:子组件 ===> 父组件

  2. 使用场景:A是父组件,B是子组件,B想给A传数据,那么就要在A中给B绑定自定义事件(事件的回调在A中)。

  3. 绑定自定义事件:

  4. 第一种方式,在父组件中:<Demo @atguigu="test"/><Demo v-on:atguigu="test"/>

  5. 第二种方式,在父组件中:


<Demo ref="demo"/>......mounted(){this.$refs.xxx.$on('atguigu',this.test)}
  1. 若想让自定义事件只能触发一次,可以使用once修饰符,或$once方法。

  2. 触发自定义事件:this.$emit('atguigu',数据)

  3. 解绑自定义事件this.$off('atguigu')

  4. 组件上也可以绑定原生DOM事件,需要使用native修饰符。

  5. 注意:通过this.$refs.xxx.$on('atguigu',回调)绑定自定义事件时,回调要么配置在methods中,要么用箭头函数,否则this指向会出问题!


http://www.ppmy.cn/news/520709.html

相关文章

【华为OD机试】分割数组的最大差值【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 给定一个由若干整数组成的数组nums ,可以在数组内的任意位置进行分割, 将该数组分割成两个非空子数组(即左数组和右数组),分别对子数组求和得到两个值, 计算这两个值的差值,请输…

复杂而臃肿的思维

1、人的很多武断随意地行为。 人类迷恋权威&#xff1a;比如对于自己不了解的官衔&#xff0c;各种名头等&#xff0c; 盲目从众&#xff1a;比如无知而贪婪的丈母娘推高的房价。 只相信对自己有利的&#xff1a;相信阴谋论&#xff0c;相信别人都是不如自己的&#xff0c;相信…

WebRTC源码研究(4)web服务器工作原理和常用协议基础(转载)

前言 前面3篇博客分别对WebRTC框架的介绍&#xff0c;WebRTC源码目录&#xff0c;WebRTC的运行机制进行了介绍&#xff0c;接下来讲解一点关于服务器原理的知识。后面博客会写关于WebRTC服务器相关的开发&#xff0c;目前git上面有好多WebRTC相关的流媒体服务器的源码&#xff…

前端面试题——计算机网络 高频

目录 一、GET 和 POST的请求的区别 二、常见的HTTP请求方法 三、 HTTP 1.0 和 HTTP 1.1 之间有哪些区别&#xff1f; 四、HTTP 1.1 和 HTTP 2.0 的区别 五、HTTP和HTTPS协议的区别 六、HTTP请求报文的是什么样的&#xff1f; 请求报文有4部分组成: 七、什么是HTTPS协议…

[学习笔记]2021韩顺平一周学会Linux

文章目录 视频链接&#xff1a;第1章&#xff1a;Linux开山篇-内容介绍1.1 本套Linux课程内容1.2 Linux使用的地方1.3 Linux应用的领域 第2章&#xff1a;Linux基础篇-Linux入门&#xff1a;2.1 Linux介绍2.1.1概述 2.2 Linux和Unix的关系2.2.1 Unix是怎么来的2.2.2 Linux是怎么…

【Http协议】深入理解HTTP协议

来源&#xff1a;http://www.blogjava.net/zjusuyong/articles/304788.html 深入理解HTTP协议 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写。它的发展是万维网协会&#xff08;World Wide Web Consortium&#…

http协议学习系列(转)

http://www.360doc.com/content/10/0930/17/3668821_57590979.shtml(转) 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写。它的发展是万维网协会&#xff08;World Wide Web Consortium&#xff09;和Internet工作小…

两种参考模型:OSI参考模型、TCP/IP模型

一、OSI/RM---开放式的互联系统参考模式 产生背景&#xff1a; OSI的大部分设计工作实际上只是Honeywell Information System公司的一个小组完成的&#xff0c;小组的技术负责人是Charlie Bachman。在70年代中期&#xff0c;这个小组主要是为了开发一些原型系统而成立的&…