页面第二次进入或者多次进入,事件总线触发事件多次,eventBus触发多次

简介: 页面第二次进入或者多次进入,事件总线触发事件多次,eventBus触发多次

问题描述


页面第二次进入或者多次进入,事件总线触发事件多次


原因分析:


我有一个页面,在created的时候会通过事件总线注册一个事件,但是我这个页面可能会进进出出很多次. 于是我的页面就出现了事件总线注册的事件我的触发机制触发一次,却执行了很多次. 后来我发现,我第一次进入页面是正常的,第二次进入这个事件会执行两次,第三次进入页面触发这个事件总线注册的事件会触发三次.


于是我便想到了应该是我的页面每次进入都注册了相同的事件,但是没有再页面销毁的时候注销事件,导致了页面第二次及后续进入的异常.


猜想:


是不是事件总线的逻辑是为注册的这个事件在总线中开辟一个数组,每次$on都会push用户对应的回调进入这个事件名的数组中,于是问了一下chatgpt,果然是的


b787d8f37e80b14f0e1cb17e8b9a1f0b_66ffae5358a4456b93e247e95c62ef82.png


自己 尝试了下

在created的时候打印1,并且不注销事件


EventBus.$on('console1',
      function () {
        console.log(1)
      }
    );


第一次进入页面


dbfd239d0165d758edbf64d117d9be8c_276a93ce56f14bb2bdeb9312861ff80e.png


第二次进入页面


57c715077a3f0e8eb677736d1cf6893f_4b90dca4c8af4d7f8c0736791c9310c1.png


第三次进入页面


31a4a3c19db31046c076e13e006f0bd3_40cafec47c5c4e76969681d48a752fa1.png


解决方案:

destroyed() {
    EventBus.$off('addelement',
      this.elementClick
    );
  },


所以注册事件最好还是销毁一下.


相关文章
|
1月前
|
JavaScript
在Vue中,如何使用事件总线来传递数据和触发事件?
在Vue中,如何使用事件总线来传递数据和触发事件?
28 0
|
7月前
|
JSON 数据格式
EventBridge事件领域
EventBridge事件领域
32 0
|
消息中间件 弹性计算 运维
阿里云事件生态再升级:使用 EventBridge 驱动全量云产品
阿里云 EventBridge 作为云上事件枢纽,早已集成了云上产品的各类事件,用户开通 EventBridge 后使用内置的云服务专用总线就可以监听这些事件,无需创建任何额外资源。
230 0
阿里云事件生态再升级:使用  EventBridge 驱动全量云产品
|
消息中间件 弹性计算 运维
重新定义分析 - EventBridge实时事件分析平台发布
为了解决事件领域中针对流式事件做分析的难题,EventBridge 近日发布了针对事件/消息领域的全新分析工具--EventBridge 实时事件分析平台。下面简要对 EventBridge 实时事件分析平台的内容进行介绍。
187 0
重新定义分析 - EventBridge实时事件分析平台发布
|
Kubernetes Cloud Native 网络协议
Knative 事件驱动实践:通过 EventBridge 触发事件
Knative是一款基于Kubernetes的 Serverless 框架。其目标是制定云原生、跨平台的 Serverless 容器编排标准。Knative通过整合容器构建(或者函数)、工作负载管理(动态扩缩)以及事件驱动这三者来实现的这一Serverless标准。那么如何给 Knative 提供生产级别的事件驱动能力?这里我们可以通过事件总线 EventBridge 来实现.事件总线EventB
217 0
Knative 事件驱动实践:通过 EventBridge 触发事件
|
JSON 监控 机器人
EventBridge 事件领域重点特性介绍(二)| 学习笔记
快速学习 EventBridge事件领域重点特性介绍。
148 0
EventBridge 事件领域重点特性介绍(二)| 学习笔记
|
JavaScript
Vue中 事件总线(eventBus)详解及使用
Vue中 事件总线(eventBus)详解及使用
276 0
Vue中 事件总线(eventBus)详解及使用
|
消息中间件 弹性计算 运维
阿里云事件生态再升级:使用 EventBridge 驱动全量云产品
阿里云 EventBridge 作为云上事件枢纽,早已集成了云上产品的各类事件,用户开通 EventBridge 后使用内置的云服务专用总线就可以监听这些事件,无需创建任何额外资源。
阿里云事件生态再升级:使用 EventBridge 驱动全量云产品
|
1月前
|
JavaScript
解释 Vue 的事件总线和 emits 属性。
解释 Vue 的事件总线和 emits 属性。
32 3
|
1月前
|
JavaScript 程序员
Vue中的全局事件总线是什么?如何使用?
Vue中的全局事件总线是什么?如何使用?
35 0