序文タイマーをクリアします。次のように書く人も多いと思います。 エクスポートデフォルト{ データ() { 戻る タイマー: null } }, マウント() { this.timer = setInterval(() => { コンソールログ('setInterval') }, 2000) }, 破棄する前に() { クリア間隔(this.timer) } } これは一般的なコードです。少なくとも私の友人の何人か (1 ~ 3 年の経験を持つ) は、このように書いています。ここには 3 つの不適切な問題があります。
最適化コード上で直接: エクスポートデフォルト{ データ() { 戻る } }, マウント() { タイマーをsetInterval(() => { コンソールログ('setInterval') }, 2000) this.$once('hook:beforeDestroy', () => { クリアインターバル(タイマー) タイマー = null }) } } ここでは、フックを使用して beforeDestroy ライフサイクルを監視するため、タイマーはライフサイクル内でのみ定義すればよく、上記の問題はすべて解決されます。 派生的な質問: beforeDestroy はトリガーされませんか?バックエンドシステムでは、ページキャッシュを設定することがよくあります。ルートがキープアライブによってキャッシュされている場合、beforeDestroyライフサイクルは実行されません。そのため、beforeDestroyでタイマーをクリアするだけで十分だと考え、実際にタイマーがクリアされていないかどうかを確認さえしない人もいます。アクティブ化されたフックと非アクティブ化されたフックの助けを借りれば、理由を知ることは簡単に解決できます。 エクスポートデフォルト{ データ() { 戻る } }, マウント() { タイマーをsetInterval(() => { コンソールログ('setInterval') }, 2000) this.$on('hook:activated', () => { if (timer === null) { // タイマーの繰り返し起動を避ける timer = setInterval(() => { コンソールログ('setInterval') }, 2000) } }) this.$on('hook:deactivated', () => { クリアインターバル(タイマー) タイマー = null }) } } ここで注意すべき点は、キャッシュの理由により、$once ではなく $on を使用する必要があるということです。そうしないと、一度実行された後は再度トリガーされません。 Vue でタイマーをエレガントにクリアする方法についての記事はこれで終わりです。Vue のタイマークリアに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: VMware 15 を使用して仮想マシンをインストールし、CentOS 8 を使用する詳細な手順
>>: Linux でスペースを含むファイルを削除する (ディレクトリではない)
Ubuntu 18.04、その他のバージョンのUbuntu質問: sudo apt-get ins...
この効果は、2つのブラウザが互いにシミュレートしていることを示しています 1. シミュレートされたノ...
mysql5.7.17無料インストールバージョンのインストールに関する最近の経験1.ダウンロードして...
目次概要コンポーネント間でデータを共有する方法Vuex の原則の紹介Vuexはコンポーネントのグロー...
良い画像素材のウェブサイトを見つけるのは難しいです。特に無料です。良い写真には非常に目を引く視覚効果...
序文上記の Web ページ スタイルを記述しているときに、スタイルの値をどのように変更しても、ページ...
各テーブルの行数をカウントするために使用される MySQL count() 関数は、誰もがよく知って...
この記事では、Linux のユーザーおよびグループのコマンドについて例を挙げて説明します。ご参考まで...
(P4) Web 標準は一連の標準で構成されています。中心となる概念は、Web ページの構造、スタイ...
目次方法1 1. 構成とインストールの手順:方法2方法3要約する方法1 1. 構成とインストールの手...
はじめに: MySQL を使用してテーブルを作成する場合、通常は自動インクリメント フィールド (A...
ソフトウェア パッケージが存在しない場合は、インストールされているソフトウェアのソフトウェア ソース...
目次原因:以下を実行します: 1. コンストラクター2.レンダリング機能3.bind関数とarrow...
効果画像: 序文:最近、屋外の大画面プロジェクトに取り組んでいました。システムの入力方法は使いにくか...
序文最近、パソコンのシャットダウンに時間がかかることが多く、強制的にシャットダウンするには電源ボタン...