背景仕事では、ページに表示されるデータが正しくなく、フロントエンドの同僚がそのデータを見つける必要があるという状況が時々発生します。 Vue で構築された SPA アプリケーションでは、初期化から最終的な表示まで、ページに最終的に表示されるデータは単純な場合も複雑な場合もあります。複雑なデータ フローに遭遇した場合、適切な方法がないとトラブルシューティングが困難になります。 データが変更されたときのコールスタックを確認できれば、間違ったデータが生成される前に何が起こったのか、また、エラーのどのステップが最終的なエラーにつながったのかがわかります。コールスタックによって提供される手がかりに従うことで、問題をすばやく見つけることができます。 例<テンプレート> <div> <!-- 期待される出力: hello,world --> <!-- 実際の出力: hello,woold --> {{メッセージ}} <button @click="f1">メッセージを変更</button> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ データ() { 戻る { メッセージ: 'こんにちは、'、 } }, メソッド: { f1() { this.msg += 'w' this.f2(); }, f2() { this.msg += 'oo'; this.f3(); }, f3() { this.msg += 'ld' } } }; </スクリプト> 誤解 - コールスタックを表示するためにウォッチでブレークポイントを設定するページの右側のコール スタックでは、f1 と msg のコールバックを確認できますが、f2 と f3 は確認できません。つまり、f2 と f3 は失われますが、実際にデータ エラーを引き起こすのは f2 です。 f2 と f3 の呼び出し情報が失われるのはなぜですか? f1、f2、f3 はすべて msg を変更したため、同じマイクロタスクで msg のウォッチャーがトリガーされました。f1 が最初にトリガーされたため、f2 と f3 のトリガーは無効でした。 Watcher コールバックが最終的に実行されると、f1 がそれをトリガーしたことのみが記憶されるため、この時点でのコール スタックでは f1 の情報しか見ることができません。 正しいアプローチnode_modules\vue\dist\vue.runtime.esm.js に移動し、defineReactive 関数の set メソッドにブレークポイントを追加します。ここで重要なのは、監視する変数の名前です。 ここでは、msg の変更の完全なプロセスを確認し、f2 によって発生した問題をすばやく見つけることができます。 要約するコールスタックを表示することで、プロジェクトに精通していなくても、データ エラーが発生した場所をすぐに見つけることができます。 console.log を使用したり、コード ロジックを整理するために多くの時間を費やしたりするのと比較して、データ フロー方式を使用すると、作業負荷を大幅に削減できます。 上記は、Vue がデータの変更を追跡する方法の詳細です。Vue によるデータの変更の追跡の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: CentOSバージョンにDockerをインストールする際のエラーの解決方法
Scrcpyのインストールsnap install scrcpy adbサービスのインストールsu...
初心者は、いくつかの HTML タグを理解することで HTML を学習できます。この入門書は、初心者...
jsvc の紹介実稼働環境では、Tomcat はデーモン モードで実行する必要があります。Tomc...
CAST関数前回の記事では、型変換を表示するために使用する CAST 関数について説明しました。暗黙...
Windows 64 ビット版 MySQL 5.7 以降の解凍パッケージにデータディレクトリ、my-...
問題は次のとおりです。mysql -uroot -p コマンドを入力しましたが、パスワードを忘れてし...
本日、開発中に、顧客からページをキャッシュしないように要求される方法に遭遇しました。調べたところ、ペ...
目次基本的な説明AST 解析レンダリング機能通常コンポーネントと動的コンポーネントの比較ファクトリ関...
目次スイッチも複雑なコードブロックもありませんPythonからのインスピレーション辞書を使用してスイ...
1. プリコンパイルの利点私たちは皆、プリコンパイル機能を備えた JDBC の PreparedSt...
次に、ログ管理、ログのアーカイブ、ログのトラブルシューティング、イベントの転送と収集のためのコンピュ...
画像の周囲にテキストを折り返すとは何ですか?これは次の図の効果です。 エフェクトのCSSコードはここ...
目次1. MySQLのインストール1.2 テーブル、データベース、ユーザーを作成する1.3 リモート...
セマンティクスについて意味論は、記号やシンボルとそれらが表す意味との関係を研究する学問です。言語学で...
開発の過程では、インスタンスの vm.$refs(this.$refs) を使用して、ref で登録...