序文タイマーをクリアします。次のように書く人も多いと思います。 エクスポートデフォルト{ データ() { 戻る タイマー: 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 でスペースを含むファイルを削除する (ディレクトリではない)
1. エフェクト表示JavaScript で書かれた宇宙飛行士のウォッチフェイス。 http://x...
いわゆる才能(左脳と右脳)つまり、芸術的な才能があるかどうかは、人間の左脳と右脳の分業によって主に決...
1. 矢印関数1. 矢印関数自体はこれをバインドしないという事実を利用します。 2. render(...
1. INSERT INTO SELECT文ステートメントの形式は次のとおりです: Insert ...
目次仕様a. ページファイルはVueの単一ファイルコンポーネント仕様に準拠しています。 b. コンポ...
コードをコピーコードは次のとおりです。 <html> <!--混合フレームレイアウ...
1. Dockerネットワーク管理1. Dockerコンテナ方式1) Dockerが外部ネットワーク...
コンテナの場合、最も単純なヘルスチェックはプロセス レベルのヘルスチェックであり、プロセスが稼働して...
MySQL 5.7.27のインストールチュートリアルは以下のように記録され、皆さんと共有されています...
導入された HTML タグは、必ずしも XHTML 仕様に完全に準拠しているわけではありません。実際...
MySQLは独立した書き込み分離を設定します。コードに次のものを書くと問題が発生する可能性があります...
目次単一マシンの展開オンラインプルミラーを見るRabbitMQを作成して実行するMQコンテナを正常に...
1. トップレベルの使用法1. cnpmをインストールする npm i -g cnpm --regi...
目次1: フロントエンドの手書きページング(データ量が少ない場合) 2: バックエンドのページング、...
バージョンチェーンInnoDB エンジン テーブルでは、クラスター化インデックス レコードに 2 つ...