代码改变世界

uni.$off 可能会移除过多的通知,导致通知不触发

2024-05-22 17:13  法子  阅读(150)  评论(0编辑  收藏  举报

如果页面 A 和页面 B 都注册通知 'info-change',

  // 页面 A
  onLoad (options) {
    uni.$on('info-change', this.reloadListA);
  },
  // 页面 B
  onLoad (options) {
    uni.$on('info-change', this.reloadListB);
  },

在 onUnload 函数种都移除了这个通知,但是移除的时候没有提供回调函数

  // 页面 A
  onUnload () {
      uni.$off('info-change') 
  },
  // 页面 B
  onUnload () {
      uni.$off('info-change') 
  },

当页面 A 跳转到页面 B,返回到页面 A,再跳转到页面 B,这时候,发出通知'info-chnage',页面 A 就不会触发。

因为退出页面 B 的时候,uni.$off('info-change'),会移除所有的 'info-change' 通知

应该

  // 页面 A
  onUnload () {
      uni.$off('info-change', this.reloadListA) 
  },
  // 页面 B
  onUnload () {
      uni.$off('info-change', this.reloadListB) 
  },