場景:後臺有訊息更新,但不會主動推送給前端,需要前端實時重新整理,獲取最新的訊息提示
思路:後臺每個頁面通常都會有 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; }); }