vue 中新增全域性輪詢訊息重新整理

渺小的人类發表於2024-05-22

場景:後臺有訊息更新,但不會主動推送給前端,需要前端實時重新整理,獲取最新的訊息提示

思路:後臺每個頁面通常都會有 layout 元件,我這裡寫在 header.vue 中,只要登入成功,

在 mounted 中編寫程式碼,採用 hook 寫法,在同一個地方編寫,邏輯較為清晰。

進入 header 相關頁面,就開始執行定時器,退出登入,清除定時器,上程式碼

mounted() {
    // 開啟訊息定時器
    let messageTimer = setInterval(() => {
      that.getnotice();
    }, 50000);

    this.$on('hook:beforeDestroy', () => {
      // 清除訊息定時器
      clearInterval(messageTimer);
      messageTimer = null;
    });

    let that = this;
    this.$on('hook:activated', () => {
      if (messageTimer === null) {
        // 避免重複開啟訊息定時器
        messageTimer = setInterval(() => {
          that.getnotice();
        }, 50000);
      }
    });

    this.$on('hook:deactivated', () => {
      // 清楚訊息定時器
      clearInterval(messageTimer);
      messageTimer = null;
    });
  }

相關文章