序文少し前に、興味深い問題を目にしました。Vue のデータが変更された後に、ビューを同期的に更新するにはどうすればよいでしょうか? 検索してみましたが、問題の解決策は見つかりませんでした。ソース コードからしか解決策を見つけることができませんでした。 理由Vue でデータを変更した後、ビューが同期的に更新されないことは誰もが知っています。 vue インスタンスが初期化された後、データはレスポンシブ オブジェクトに設定されます。this.xxx = 1 を実行すると、このレスポンシブ オブジェクトのセッターがトリガーされます。セッターでは、xxx にサブスクライブしているすべてのサブスクライバーに通知するための更新がトリガーされます。ただし、このトリガー更新は同期的ではなく、すべてのウォッチャーをキューに追加し、nextTick 後にビューを更新します。 そのため、vue はビューを同期的に更新できません。 回避策原因がわかれば、必ず解決策を見つけることができます。 ビューは nextTick で更新されるため、このときにビューを更新するメソッドを実行する必要があります。データが変更されたときにこのメソッドを手動で実行すれば、ビューを同期的に更新するという目的を達成できます。 ソース コードを理解すると、実行されるメソッドは watcher.run() であることがわかります。では、このメソッドを取得するにはどうすればよいのでしょうか。 これをすぐに理解したい場合は、Vue.js Technology Unveiledを読むことをお勧めします。 これをコンソールに出力してみましょう run メソッドは _watcher オブジェクトのプロトタイプで見つかるため、問題は解決します。 xxx = 1; this._watcher.run() 上記のコードを実行し、データを更新した後にビューを手動で更新して、同期効果を実現します。 より良い解決策ビューを同期更新したいときに、毎回 this._watcher.run() を追加するのは面倒です。そこで、this.xxx = 1 以降のビューの同期更新をサポートするプラグインを作成しました。 このプラグインの原理は非常にシンプルです。コンポーネント オプションに、データに似たオプション syncData を追加します。次に、それをデータに配置します。create フックが呼び出されると、この部分のデータが再びハイジャックされます。syncData のデータが変更されると、_watch.run() が自動的にトリガーされ、ビューが同期的に更新されます。 プラグインアドレス: GitHubアドレス 追記正直に言うと、このプラグインは役に立たないと思います。理論的には、このプラグインが解決できる問題はすべて $nextTick で解決できます。 Vue でデータ変更後にビューを同期する方法についての記事はこれで終わりです。Vue ビュー同期更新の関連コンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Centos7 に Nginx 統合 Lua サンプル コードをインストール
>>: MySQL をデプロイするときに発生する「テーブル mysql.plugin が存在しません」という問題の解決方法
今回は、 RNの起動処理を整理しました。最後のstartReactApplication比較的複雑で...
序文データベース トランザクションに関して言えば、トランザクションの ACID 特性、分離レベル、解...
目次情事の概念取引の状態取引の役割取引の特徴トランザクション構文トランザクション対応ストレージエンジ...
これまでのプロジェクトはすべて Windows システム環境にデプロイされていました。今回は Lin...
ユーザーの権限に応じて異なるメニュー ページを表示します。知識ポイントルートガード(事前ガードを使用...
データベース (MySQL) を準備します。すでに MySQL をお持ちの場合は、これを無視できます...
1. まず本文にulタグを追加します <!-- 順序なしリスト --> <ul i...
港Harborは、エンタープライズレベルのプライベートDockerイメージリポジトリを構築するための...
昨年、プロジェクトの必要性により、Python でクローラーを作成しました。クロールされたデータは、...
データベースコマンド仕様すべてのデータベース オブジェクト名には小文字を使用し、アンダースコアで区切...
ログイン認証にトークンを使用する考え方は次のとおりです。 1. 初めてログインする場合、フロントエン...
SQL 左結合、右結合、内部結合、自然結合 さまざまな結合の概要SQL には、左結合、右結合、内部結...
開発に Vue を使用する場合、次のような状況に遭遇することがあります。Vue インスタンスを生成し...
フロントエンドプロジェクトのパッケージ化.env.productionを見つけて、自分のIPまたはド...
2つの状況がある1. 開始時間と終了時間が同じボックス内にあります(今月のみ限定) 2. 開始時間と...