页面被销毁后,接口仍然被调用;Bus.$off
创始人
2025-05-28 12:31:56
0

目录

一、问题

二、原因及解决方法

三、总结


一、问题

1.突然发现自己写的页面有点奇葩,虽然两个页面有一致的逻辑,但是另外一个都还没有写逻辑,结果另外一个页面也已经正常渲染 图标及div了。真是奇怪。

二、原因及解决方法

1.如下图所示,从页面A跳转到页面B,本来页面B上的那个图标是不应该显示的,我还没有写渲染逻辑呀!但是它渲染了。控制台打印渲染图标的函数被执行了两次,那只能是页面A执行的呀!

 2.为什么会执行两次呢?难道不应该是一次吗?组件销毁了,还能执行一次?

 3.原因:我使用了Bus.$on('renderDom',()=>{ //渲染图标的逻辑})

   组件被销毁前,Bus.$on竟然又监听到了 renderDom事件,然后执行了渲染图标的函数!!!!!!

4.解决方法:在组件销毁前(onBeforeUnmount生命周期函数) Bus.$off('renderDom',()=>{ //渲染图标的逻辑}),取消监听 renderDom事件即可。

代码如下:

    onBeforeUnmount(()=>{Bus.$off('renderDom',()=>{ //渲染图标的逻辑})})

三、总结

1.使用Bus.$on监听其他组件的事件时,一定要在页面销毁前 Bus.$off取消监听呀。否则,销毁当前页面后还会自动执行一次监听事件,可能会对其他页面的渲染逻辑产生影响,同时也会带来不必要的接口调用,影响页面渲染的性能。

2.发现页面销毁后还有函数被调用,请检查是否有Bus.$on监听,但没有在离开页面前使用 Bus.$off取消监听。

3.当然有时候也可以利用这个特点做一些其他事情,符合业务逻辑即可!!!!!!

相关内容

热门资讯

大手笔买不停!江南化工花6.4... 本报(chinatimes.net.cn)记者何一华 李未来 北京报道江南化工(002226.SZ)...
总装机容量100万千瓦 年均发... 昨天(1月1日)记者获悉,位于四川省甘孜藏族自治州理塘县雅砻江流域的索绒光伏电站建成投产,电站场址平...
一键收藏!2026年赛事日历来... 来源:新华网客户端
晓数点丨券商1月金股出炉:这些... 2025年12月A股市场整体震荡走强,沪指累计涨2.06%,深证成指累计涨4.17%,创业板指累计涨...
2026金融走势|买什么?卖什... 2025 年AI与国家竞争重塑全球投资逻辑,全球金融市场分化加剧:贵金属大涨,全球股市普涨,房地产、...
躺赚神话,凉了? 两周前,程思把自己的驿站卖了。此时正值一年最大的快递旺季,也是快递驿站重要的收入高峰。这个每天能收8...
1499元飞天茅台连续两日秒光... 记者丨刘雪莹 肖夏编辑丨倪新平继昨日首批上架瞬间售罄后,2026年开年第二天,i茅台上架的1499元...
房价企稳回升的四条国际规律 当前市场正在紧盯一个问题:房地产市场的底部究竟在哪里?中信建投证券宏观团队周君芝、谢雨心在最新报告中...
港股午评:恒生指数涨2.18%... 新京报贝壳财经讯 1月2日,港股午间收盘,恒生指数涨2.18%,恒生科技指数涨3.38%。板块方面,...
被索赔23亿元,欣旺达“问题电... 红星资本局1月1日消息,一起索赔额高达23亿元的诉讼案,把欣旺达(300207.SZ)推上风口浪尖。...