uni.$off 可能會移除過多的通知,導致通知不觸發

法子發表於2024-05-22

如果頁面 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) 
  },

相關文章