组件自定义事件学习笔记

news2024/12/23 0:47:07

组件自定义事件_绑定

JS中有内置事件比如click,keyup。内置事件是给标签使用的,而自定义事件是给组件使用的。

子组件给父组件传递数据有两种方式

App父组件,School和Student是子组件。
在这里插入图片描述

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

在App中给School组件单项数据绑定getSchoolName,methods里面写getSchoolName(name),形参接收name,将方法传给School组件;

<School :getSchoolName="getSchoolName" />
 methods: {
    getSchoolName(name) {
      console.log('App收到了学校名', name)
    }
  }

再在School组件当中接收数据

 <button @click="sendSchoolName">把学校名给App</button>
    methods: {
        sendSchoolName() {
            this.getSchoolName(this.name)
        }
    }




现在使用第二种方法将学生名传给App。

通过父组件给子组件绑定一个自定义事件实现子给父传递数据(@或者v-on)

给Student组件的实例对象(vc)绑定了testa事件

<Student v-on:testa="getStudentName" />

methods方法

 getStudentName(name) {
      console.log('demo被调用了!', name)
    }

Student中定义click事件

 <button @click="sendStudentName">把学生名传给App</button>

在Student的方法中定义click事件调用App的自定义事件testa(getStudentName方法传给了testa)

 methods: {
        sendStudentName() {
            //触发Student组件实例身上的testa对象
            this.$emit('testa', this.name)
        }
    }

通过父组件给子组件绑定一个自定义事件实现子给父传递数据(ref)

在App中

<Student ref="student" />

this. r e f s . s t u d e n t 是 S t u d e n t 的实例对象,可以绑定事件, refs.student是Student的实例对象,可以绑定事件, refs.studentStudent的实例对象,可以绑定事件,on当testa被触发执行回调getStudentName;这种写法的好处是灵活性很好。比如等3s给Student实例绑定对象

  mounted() {
    setTimeout(() => {
      this.$refs.student.$on('testa', this.getStudentName)
    }, 3000)
  },

思考小问题,如果只触发一次testa怎么设置
方法三将$on改成$once ``` this.$refs.student.$once('testa', this.getStudentName) ``` 方法2添加.once ```

开发技巧

如果开发中参数很多,可以使用ES6中的一种方法来接受参数
ES6 引入 rest 参数(形式为 …变量名 ),用于获取函数的多余参数,这样就不 需要使用 arguments 对象了。rest 参数搭配的变量是一个数组,该变量将多余的 参数放入数组中。

    getStudentName(name, ...params) {
      console.log('demo被调用了!', name.params)
    }

name接收一个参数,…params接收其余所有参数。

组件自定义事件_解绑

给谁绑定了自定义事件就给谁解绑。
在Student组件页面中给按钮设置解绑事件。

 <button @click="unbind">解绑testa事件</button>




解绑一个自定义事件。

 unbind() {
    this.$off('testa')
 }




解绑两个自定义事件

this.$off(['testa', 'demo'])




解绑所有的自定义事件

this.$off()

vm销毁的之后会移除所有的watchers 子组件和自定义事件,所以也可以直接销毁当前组件的实例,销毁后实例的所有的自定义事件失效

  <button @click="destroyed">销毁当前组件的实例</button>
   destroyed() {
            this.$destroy()
   }

总结

  1. 组件的自定义事件适用于子组件给父组件传输数据
  2. 使用场景:A是父组件,B是子组件,B想给A传数据,就要在A中给B绑定自定义事件(事件回调在A中)
  3. 绑定自定义事件:
    (1).父组件中 <Demo @test=“abc”/>或<Demo @test=“abc”/>
    (2).父组件中
    ……
    mounted(){
    this. r e f s . x x x . refs.xxx. refs.xxx.on(‘test’,this.abc)
    }
    (3).如果想要让自定义事件只能触发一次,可以使用once修饰符,或者$once方法。
  4. 触发自定义事件 this.$emit(‘test’,数据)
  5. 解绑自定义事件 this.$off(‘test’)
  6. 组件上也可以绑定原生Dom事件,需要使用native修饰符
  7. 注意:通过this. r e f s . x x x . refs.xxx. refs.xxx.on(‘test’,回调)绑定自定义事件时,回调配置在methods中,或者是用箭头函数,否则会出现this指向问题。
    义事件 this.$off(‘test’)
  8. 组件上也可以绑定原生Dom事件,需要使用native修饰符
  9. 注意:通过this. r e f s . x x x . refs.xxx. refs.xxx.on(‘test’,回调)绑定自定义事件时,回调配置在methods中,或者是用箭头函数,否则会出现this指向问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1012791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深度学习】 Python 和 NumPy 系列教程(廿五):Matplotlib详解:3、多子图和布局:subplot()函数

目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 3、多子图和布局 1. subplot()函数 简单示例 一、前言 Python是一种高级编程语言&#xff0c;由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名&#xff0c;并且具有强大的功能…

【Redis】深入理解 Redis 持久化机制 —— RDB 和 AOF

文章目录 一、Redis 的持久化二、RDB 持久化机制2.1 对 RBD 的认识RDB 的概念RDB 持久化机制的优缺点RDB 的相关配置 2.2 RDB 的触发时机2.2 RDB 的触发时机自动触发手动触发&#xff1a;SAVE 和 BGSAVE 2.3 RDB 文件的处理保存 RDB 文件压缩 RDB 文件校验 RDB 文件 三、AOF 持…

Python如何查看内存泄漏

在python中&#xff0c;当一个变量不被引用的时候就会触发垃圾回收机制从而被从内存中删除&#xff0c;但有时一个不注意可能就会出现内存泄漏问题。 Python中可能的会出现内存泄露的情况 (1) 循环引用&#xff1a;当两个或多个对象相互引用&#xff0c;造成的循环引用进而导…

Pytorch学习:torch.argmax(input, dim, keepdim=False)详解

torch.argmax() 返回输入中所有元素的最大值的索引&#xff0c;与torch.max()中返回(values, indices)中的indices类似&#xff0c;它也常被用于深度学习中的分类问题。 在下面程序中&#xff0c;使用torch.argmax() import torcha torch.tensor([[1, 2, 3, 4],[4, 1, 2, 3]…

5个免费的3D钣金CAD软件

作为一名咨询顾问&#xff0c;我一直在寻找能够满足大客户需求的最佳 CAD 软件。 但我知道并不是每个人都在寻找劳斯莱斯式的钣金设计解决方案。 有时你只想要一些简单的东西&#xff0c;而且最好是免费的。 例如&#xff0c;如果你正在设计简单的折叠钣金零件&#xff0c;则只…

Linux安装filebeat

相关链接 主⻚&#xff1a; https://www.elastic.co/cn/products/beats/filebeat 下载&#xff1a; wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.1-linux-x86_64.tar.gz 百度云链接&#xff1a;https://pan.baidu.com/s/1MLshk_VyZZTmKhZvlS…

基于SpringBoot的一套强大后台管理系统

概述 一个功能强大而完善的后台管理系统框架&#xff0c;用户可基于此框架进行二次开发&#xff0c;定制成符合自己的需求的后台管理系统&#xff01; 详细 运行截图&#xff1a; 项目结构&#xff1a; 详细说明&#xff1a; 环境说明&#xff1a; jdk1.8mavenMySQL5.7 项…

Vue框架--Vue过滤器

下面&#xff0c;我们一起来看看Vue中的过滤器。 过滤器&#xff1a; 定义&#xff1a;对要显示的数据进行特定格式化后再显示&#xff08;适用于一些简单逻辑的处理&#xff09;。 语法&#xff1a; 1.注册过滤器&#xff1a;Vue.filter(name,callback) 或 ne…

分享一个springboot+uniapp开发的线上马拉松报名小程序源码 lw 调试

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…

【史上最硬核分享】Docker+jenkinsPipeline 运行实现 python 自动化(超详细)

一、实现思路 在 Linux 服务器安装 docker创建 jenkins 容器jenkins 中创建 pipeline 项目根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境)运行新的 python 容器&#xff0c;执行 jenkins 从仓库中拉下来的自动化项目执行完成之后删除容器 二、环境准备 Linu…

HUAWEI华为笔记本MateBook 14 I5 独显(KLV-W19)原装出厂Windows10系统1809

华为原厂Windows10系统&#xff0c;自带指纹、声卡、显卡等所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、华为电脑管家等预装程序 链接&#xff1a;https://pan.baidu.com/s/1ylRh1RmZU0S67ayGip8bpw?pwds34v 提取码&#xff1a;s34v

数据库被攻击需要注意什么

没想到自己用了一个简单的腾讯虚拟机&#xff0c;里面自己安装了一个 MySQL 数据库也会被黑客攻击。 一、问题现象 小程序访问不了&#xff0c;后台程序报数据库相关的错误。 查看数据库&#xff0c;发现数据库被篡改。 二、问题原因 1、为了可以远程能够访问数据库&#xf…

是时候重视官网了,寄生平台的生意表达,就是在给平台打工

B2C在国外80%在官网成交&#xff0c;20%在电商平台&#xff1b;在中国刚好反过来&#xff0c;99%在电商及社交平台&#xff0c;也许只有1%在官网&#xff0c;导致大量的利润都交给平台&#xff0c;换句话说&#xff0c;就是给平台打工。 “要改变普遍不重视官网的认知&#xf…

在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发环境

目录 在Windos 10专业版搭建Fyne&#xff08;Go 跨平台GUI&#xff09;开发环境一 Fyne 和 MSYS2简介1.1 Fyne1.2 MSYS2 二 安装 MSYS22.1 下载MSYS22.2 安装2.3 环境变量设置2.4 检测安装环境 三 参考文档 在Windos 10专业版搭建Fyne&#xff08;Go 跨平台GUI&#xff09;开发…

锐捷交换机vlan隔离(wifi段仅能访问外网,不能访问内网)

因为公司的wifi段&#xff0c;未做隔离&#xff0c;无意间上了网&#xff0c;发现能访问内网网段&#xff0c;这里内网是10、20段&#xff0c;管理网段是100段&#xff0c;于是做了和内网的vlan隔离。 拓朴如下&#xff0c;所有vlan的网关都起在核心上&#xff0c;所有交换机通…

SpringMVC----自定义注解

目录 自定义注解 是什么 作用 JDK元注解 测试案列 案例一&#xff08;获取类与方法上的注解值&#xff09; 案例二&#xff08;获取类属性上的注解属性值&#xff09; 案例三&#xff08;获取参数修饰注解对应的属性值&#xff09; 五.Aop自定义注解的应用 Mylog…

面试题三:请你谈一谈Vue中的filter功能的实现

Vue中过滤器(filter)的使用 我们想一下有methods为什么要有filter的存在呢&#xff0c;因为filter的实现效率比methods要高的多。 看一下官方定义&#xff1a; Vue.js 允许你自定义过滤器&#xff0c;可被用于一些常见的文本格式化。过滤器可以用在两个地方&#xff1a;双花括号…

常见知识蒸馏方法总结记录

蒸馏&#xff08;Knowledge Distillation&#xff09;是一种将一个模型&#xff08;通常称为教师模型&#xff09;学习到的知识迁移到另一个模型&#xff08;通常称为学生模型&#xff09;的技术。通常&#xff0c;教师模型是一个复杂而准确的模型&#xff0c;而学生模型则是一…

ABB PU515A 3BSE032401R1 自动化控制模块

ABB PU515A 3BSE032401R1 是一种自动化控制模块&#xff0c;通常用于工业自动化和控制系统中&#xff0c;以支持各种控制和监测任务。以下是可能适用于ABB PU515A 3BSE032401R1 自动化控制模块的一些常见产品特点&#xff1a; 多通道控制&#xff1a; PU515A 通常具有多个输入和…

基于5G网络的智能车间MES设计方案

导读 在数字化转型建设过程中&#xff0c;机械制造企业的难点是智能车间的设计。随着5G技术的发展&#xff0c;大量的带网络接口的智能设备的投入使用&#xff0c;智能车间的实施成为可能。本文从车间生产计划调度、过程管控、设备管理、质量管理、能耗管理和物流仓储等方面提…