Vue + elementUIバックグラウンド管理がページをdestroyed()クリアタイマー無効のままにする問題を解決します

通常、クリアタイマーは、ページが破棄されるとクリアされます。

this.timer= setInterval(()=>{
    
    
        console.log("我刷新了")
},15000)

destroyed(){
    
    
	clearInterval(this.timer)
}

ただし、これを行うことは、バックグラウンド管理ページでは機能しません。
問題は、背景を書くときに、メインページ(つまり、ヘッダー、サイドナビゲーションバー、下部、中央のコンテンツを含む)を習慣的に設定し、すべてのサブページを中央のコンテンツに配置することです。サブページにタイマーを設定する場合、他のサブページに切り替えても実際にはページが離れることはありませんが、メインページにとどまるため、destroyed(){}でクリアタイマーを設定しても効果はありません。
基本的に:サブコンポーネントのタイマーをクリアします。
解決策ルートを離れるときに、beforeRouteLeave(to、from、next){}をクリアします。

メソッドは子コンポーネントに配置されます

this.timer= setInterval(()=>{
    
    
        console.log("我刷新了")
},15000)

beforeRouteLeave (to, from, next) {
    
    
    console.log("我离开了")
    clearInterval(this.timer)
    next()
}

next()を追加する必要があることに注意してください。追加しないと、サイドバーのナビゲーションバーが切り替えられたときに切り替えルートが無効になり、ページを切り替えることができなくなります。

おすすめ

転載: blog.csdn.net/GongWei_/article/details/112618624