Vue.js 中的 $emit 和 $on 方法有什么区别?
Vue.js 中的 $emit 和 $on 方法有什么区别?
在 Vue.js 中,$emit 和 $on 方法是两个常用的方法,用于实现组件间的通信。它们可以让我们在一个组件中触发一个自定义事件,并在另一个组件中监听这个事件,从而实现组件间的数据传递和交互。虽然它们的名字很相似,但它们的作用和用法有所不同。本文将介绍 $emit 和 $on 方法的区别,并通过代码示例来说明它们的用法。
$emit
$emit 方法是 Vue.js 中用于触发自定义事件的方法。它可以让我们在一个组件中触发一个自定义事件,并向父组件或祖先组件派发这个事件。在触发事件时,我们可以传递任意数量的参数,这些参数可以在监听事件的组件中获取到。
下面是一个使用 $emit 方法的示例代码:
// 定义一个名为 myButton 的组件
Vue.component('my-button', {template: `<button @click="onClick">Click me</button>`,methods: {onClick: function () {this.$emit('clicked', 'Hello, world!')}}
})// 定义一个名为 myApp 的组件,并在其中监听 myButton 组件的 clicked 事件
Vue.component('my-app', {template: `<div><my-button @clicked="onButtonClicked"></my-button><p>{{ message }}</p></div>`,data: function () {return {message: ''}},methods: {onButtonClicked: function (msg) {this.message = msg}}
})
在上面的代码中,我们定义了一个名为 myButton 的组件。这个组件中有一个按钮,当用户点击按钮时,会触发一个名为 clicked 的自定义事件,并将字符串 ‘Hello, world!’ 作为参数传递给事件处理函数。
然后,我们定义了一个名为 myApp 的组件,并在其中监听 myButton 组件的 clicked 事件。当 myButton 组件触发 clicked 事件时,myApp 组件中的 onButtonClicked 方法就会被调用,并将传递给事件处理函数的参数赋值给组件中的 message 数据,从而更新视图。
需要注意的是,$emit 方法只能向父组件或祖先组件派发事件,不能向子组件或后代组件派发事件。这是因为 Vue.js 中的事件传递是基于 DOM 树的,父组件可以通过 props 将数据传递给子组件,但是子组件不能直接向父组件传递数据。
$on
$on 方法是 Vue.js 中用于监听自定义事件的方法。它可以让我们在一个组件中监听一个自定义事件,并在事件触发时执行一个回调函数。在监听事件时,我们可以指定一个可选的参数,用于限制事件的作用域,使得事件只在指定的组件中有效。
下面是一个使用 $on 方法的示例代码:
// 定义一个名为 myButton 的组件,并在其中触发一个 clicked 事件
Vue.component('my-button', {template: `<button @click="onClick">Click me</button>`,methods: {onClick: function () {this.$emit('clicked', 'Hello, world!')}},created: function () {this.$emit('clicked', 'Hello, world!')}
})// 定义一个名为 myApp 的组件,并在其中监听 myButton 组件的 clicked 事件
Vue.component('my-app', {template: `<div><my-button></my-button><p>{{ message }}</p></div>`,data: function () {return {message: ''}},created: function () {this.$on('clicked', this.onButtonClicked)},methods: {onButtonClicked: function (msg) {this.message = msg}}
})
在上面的代码中,我们定义了一个名为 myButton 的组件,并在其中触发一个 clicked 事件。在 myApp 组件中,我们使用 $on 方法监听 myButton 组件的 clicked 事件,并指定该事件只在 myApp 组件中有效。当 myButton 组件触发 clicked 事件时,myApp 组件的 onButtonClicked 方法就会被调用,并将传递给事件处理函数的参数赋值给组件中的 message 数据,从而更新视图。
需要注意的是,$on 方法只能监听已经派发的事件,不能监听尚未派发的事件。因此,在上面的代码中,我们在 myButton 组件的 created 钩子函数中手动触发了 clicked 事件,以便 myApp 组件可以监听到该事件。
区别
$emit 和 o n 方法的区别主要在于它们的作用和用法。 on 方法的区别主要在于它们的作用和用法。 on方法的区别主要在于它们的作用和用法。emit 方法用于触发自定义事件并向父组件或祖先组件派发该事件,而 o n 方法用于监听自定义事件并在事件触发时执行回调函数。 on 方法用于监听自定义事件并在事件触发时执行回调函数。 on方法用于监听自定义事件并在事件触发时执行回调函数。emit 方法必须在组件内部使用,而 $on 方法可以在任何地方使用,包括组件内部和组件外部。
另外,$emit 方法可以传递任意数量的参数,而 o n 方法只能传递一个参数,这个参数就是事件处理函数在接收到事件时传递的数据。 on 方法只能传递一个参数,这个参数就是事件处理函数在接收到事件时传递的数据。 on方法只能传递一个参数,这个参数就是事件处理函数在接收到事件时传递的数据。emit 方法只能向父组件或祖先组件派发事件,而 $on 方法可以监听任意组件派发的事件。
总结
$emit 和 o n 方法是 V u e . j s 中用于实现组件间通信的两个重要方法。 on 方法是 Vue.js 中用于实现组件间通信的两个重要方法。 on方法是Vue.js中用于实现组件间通信的两个重要方法。emit 方法用于触发自定义事件并向父组件或祖先组件派发该事件,而 o n 方法用于监听自定义事件并在事件触发时执行回调函数。 on 方法用于监听自定义事件并在事件触发时执行回调函数。 on方法用于监听自定义事件并在事件触发时执行回调函数。emit 方法必须在组件内部使用,而 o n 方法可以在任何地方使用,包括组件内部和组件外部。 on 方法可以在任何地方使用,包括组件内部和组件外部。 on方法可以在任何地方使用,包括组件内部和组件外部。emit 方法可以传递任意数量的参数,而 o n 方法只能传递一个参数。 on 方法只能传递一个参数。 on方法只能传递一个参数。emit 方法只能向父组件或祖先组件派发事件,而 $on 方法可以监听任意组件派发的事件。
在实际开发中,$emit 和 $on 方法经常被用来实现父子组件之间的数据传递和交互。通过熟练掌握这两个方法的用法,我们可以更加灵活地组织组件间的关系,提高组件的复用性和可维护性。
相关文章:

Vue.js 中的 $emit 和 $on 方法有什么区别?
Vue.js 中的 $emit 和 $on 方法有什么区别? 在 Vue.js 中,$emit 和 $on 方法是两个常用的方法,用于实现组件间的通信。它们可以让我们在一个组件中触发一个自定义事件,并在另一个组件中监听这个事件,从而实现组件间的…...
LAZADA平台的商品评论Python封装API接口接入文档和参数说明
LAZADA是一个位于东南亚的电商平台,成立于2012年。该平台覆盖的国家包括新加坡、马来西亚、印尼、菲律宾、泰国和越南等地。它提供了一个多样化的产品选择,包括时尚、美容、数码、母婴等商品,并且拥有许多知名品牌的官方旗舰店。同时…...

云原生Docker镜像管理
docker是什么? docker是一个go语言开发的应用容器引擎。 docker的作用? ①运行容器里的应用; ②docker是用来管理容器和镜像的一种工具。 #容器 与 虚拟机 的区别? 容器虚拟机所有容器共享宿主机内核每个虚拟机都有独立的操…...

ChatGPT+小红书的8种高级玩法
掌握了这套万能命令,让你快速做出小红书爆款文案! 一、用ChatGPT做定位 我是一个大龄的普通人,没有什么特殊的技能,接下来,请你作为一位小红书的账号定位专家,通过与我对话的方式,为我找到我的小红书账号定…...

shell脚本学习记录1(运算符)
Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 以下实例我们向脚本传递三个…...

vector 迭代器失效问题
vector 迭代器失效 迭代器的主要作用就是让算法能够不用关心底层数据结构,其底层实际就是一个指针,或者是对指针进行了封装,比如:vector的迭代器就是原生态指针T* 。因此迭代器失效,实际就是迭代器底层对应指针所指向…...

docker使用与服务器上的可视化(ROS rviz等)
1.安装docker 安装docker:官网教程,按照官网命令一步步来即可。 添加当前用户到docker用户组: 【docker】添加用户到docker组,这样后面运行docker的时候前面不需要加sudo命令,否则运行docker的时候一直需要在前面加su…...

最新版本Portraiture4.1中文版ps磨皮滤镜插件安装包
在Portraiture有非常强大的手动功能,可以为用户进行手动调整照片中的皮肤区域以达到更加完美的效果,软件还支持同时导入上千张照片,用户可以通过自动识别照片中的人脸从而依照自己的风格进行批量处理十分的方便快捷。 最新版本Portraiture 4…...

仓储WMS对接淘宝奇门详细说明【亲测可用】
文章目录 简介名词解释奇门对接方案前期准备系统调用流程代码实现思路关键点(个人观点)奇门对接关键代码可能遇到的问题 简介 淘宝奇门项目支持 ERP、WMS 之间的系统标准化对接,通过构建 ERP、WMS 系统之间标准通信协议来实现不同系统之间的打通;对商家…...

RFID软件:简介、功能和应用范围
在当今快节奏的商业环境中,RFID(射频识别)技术已经成为物流、供应链和库存管理等领域中不可或缺的工具。本文将向您介绍RFID软件的基本知识,探讨其功能和广泛应用的范围。 第一部分:RFID软件简介 RFID软件是一种应用…...

Android 逆向之安全防护基本策略
对抗反编译 混淆 使用混淆主要可以减小包的大小。混淆对于安全保护来说,只是增加了阅读难度而已。混淆不会把关键代码混淆掉,比如MainActivity,Application等,可以通过分析smali和阅读jar包定位代码。 资源混淆也是换汤不换药&…...

基站机房:保障通信网络稳定,如何解决安全隐患?
基站机房作为无线通信网络的关键组成部分,承载着大量的网络设备和通信设施,对于运营商和通信服务提供商来说具有重要意义。 无论是大型运营商还是通信服务提供商,动环监控系统都将成为他们成功运营和管理通信网络的关键工具。 客户案例 案例…...

sqlmap -os-shell 使用方法
一、burp suite抓包。 如上图所示,红框处很明显是一个传参点,我们就在这个页面抓包。 抓到包之后将内容保存到桌面的1000.txt文件下。 二、sqlmap跑包。 打开sqlmap跑包。 python sqlmap.py -r C:\Users\16434\Desktop\1000.txt -dbmsmysql --os-shell…...

Go语言并发之Select多路选择操作符
1、Go语言并发之Select多路选择操作符 select 是类 UNIX 系统提供的一个多路复用系统 API,Go 语言借用多路复用的概念,提供了 select 关键字,用 于多路监听多个通道。当监听的通道没有状态是可读或可写的,select 是阻塞的&#…...

黄金回收小程序开发功能有哪些?
一、用户端: 1、实时查询:通过对接三方接口实现实时金价动态查看; 2、多种类珠宝实时回收:小程序支持多品类珠宝的实时回收包含黄金饰品、金条、铂金、K金、白银等,同步实现价格实时更新; …...
nginx的详解与应用
前言 说明 要义 nginx 有一个master 进程和多个worker 进程。主进程的主要目的是读取和评估配置,以及维护工作进程。工作进程对请求进行实际处理。nginx 采用基于事件的模型和依赖于操作系统的机制在工作进程之间有效地分发请求。工作进程的数量在配置文件中定义…...
SpringBoot激活profiles的几种方式
多环境是最常见的配置隔离方式之一,可以根据不同的运行环境提供不同的配置信息来应对不同的业务场景,在SpringBoot内支持了多种配置隔离的方式,可以激活单个或者多个配置文件。 激活的profiles要在项目内创建对应的配置文件,格式…...

【Java】Java核心要点总结:58
文章目录 1. java中 怎么确保一个集合不能被修改2. 队列和栈是什么 有什么区别3. Java8开始的ConcurrentHashMap为什么舍弃了分段锁4. ConcurrentHashMap 和 Hashtable有什么区别5. ReadWriteLock和StampeLock 1. java中 怎么确保一个集合不能被修改 Java 中可以使用 Collectio…...
前端面试题---作用域链和原型链
一.JavaScript 中的作用域链是如何工作的? JavaScript 中的作用域链(Scope chain)是一种用于查找变量和函数的机制,它是由嵌套的作用域环境组成的链式结构。 当在 JavaScript 中访问一个变量或函数时,解析器会首先在当前作用域…...
零售品牌私域流量池如何运营?火山引擎数智平台提供全套产品组合
虽然距离6月18日还有两周时间,但各大平台的第一波618战绩(预售尾款)已经相继出炉。 5月31日晚8点,京东率先公布618开门红10分钟销售战报:10分钟内,成交额破亿品牌数同比增长23%,超六成的新商家…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...