【Vue2】事件總線(eventbus)中多次觸發事件的解決方法,解綁事件總線里的方法


今天在使用事件總線進行組間通信的時候,在子組件mounted鈎子內打印了this查看指向

每個組件都有自己的_uid,_uid: 80,沒問題。

 

 

 但是當我來回切換一次頁面(組件肯定伴隨着不停的銷毀創建),第二和第三行為本次的打印,發現同時打印出了兩次,且由_uid可知為兩個不同組件(准確來說是同一個組件的兩次創建)

 

 

 隨即我再一次切換了頁面,第四、五、六行為本次打印,同時出現了三次。

 

 

思考:本質上是mounted鈎子里的事件未解綁,導致不停調用已經死亡的組件的事件(這里描述不知道是否准確)。很明顯我們只需要對最新的頁面(最后一次出現的_uid)觸發事件即可。是由於我們沒有解綁事件,肯定是對性能有影響的。

解決辦法:只要在beforeDestroy鈎子里解綁事件

尤大的答復,事件總線上$emit和$on的事件需要在beforeDestory或者destory鈎子里銷毀它。如果重復工作了,可以在mixin里自動完成它。

 

 

 

 vm.$off解綁后再次測試(在vm.$emit的那個組件解綁),我分別切換了三次頁面並每次觸發點擊事件,每次都只顯示最新的頁面(最大的_uid)觸發了事件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM