JavaScript の制限により、Vue は次の配列の変更を検出できません。
var vm = 新しい Vue({ データ: { 項目: ['a', 'b', 'c'] } }) vm.items[1] = 'x' // 応答なし vm.items.length = 2 // 応答なし 回避策手動で監視を追加する // Vue.set Vue.set(vm.items、アイテムのインデックス、新しい値) vm.$set(vm.items, アイテムのインデックス, 新しい値) Vue は配列変更メソッドの応答性を実装しているため、配列変更メソッドを使用します // Array.prototype.splice vm.items.splice(アイテムのインデックス、1、新しい値) Vue2.0 で 2 つの配列の変更を監視できないのはなぜですか?公式ドキュメントでは、これら 2 つの点について、「JavaScript の制限により」実装不可能であると簡単にまとめており、Object.defineProperty はデータの変更を検出するためのソリューションです。この制限は Object.defineProperty のことを指しているのでしょうか? 実際、その理由は Object.defineProperty() の脆弱性ではなく、パフォーマンス上の考慮によるものです。配列内の Object.defineProperty のパフォーマンスはオブジェクト内と同じです。配列のインデックスはオブジェクト内のキーとみなすことができます。
したがって、Object.defineProperty には配列インデックスの変更を監視する機能がありますが、vue2.x ではこの機能は廃止されています。 ソースコード分析Object.property はインデックスを通じて配列を変更する操作を検出できますが、Vue はこれを実装していません。それではソースコードを見てみましょう。 ヴュー3.0Vue 3.0 では、既存の問題を解決するために Object.defineProperty() の代わりに proxy が使用されます。 以上が、Vue2で配列の変更が検出できない原因と解決方法の詳しい内容です。Vue2の配列の変更についてさらに詳しく知りたい方は、123WORDPRESS.COMのその他の関連記事もぜひご覧ください! 以下もご興味があるかもしれません:
|
<<: Kafka の Docker デプロイメントと Spring Kafka 実装
>>: Windows で virtualenv を使用して仮想環境を作成する方法 (2 つの方法)
選択肢がある場合は、UTF-8を使用することをお勧めします。実際、Windows システム自体のプロ...
Linux オペレーティング システムは過去 20 年間にわたってデータ センターに革命をもたらし...
1. インストール dockerhub を通じてインストールする mariadb のバージョンを検索...
目次序文1. ファイルのディスク使用量を確認する1.1 ディスク容量の使用状況を確認する1.2 ディ...
日常の運用・保守作業では、nginx サービスが頻繁に使用され、nginx の高同時実行性によって生...
ほとんどの場合、MySQL はインストールしたばかりのときは中国語をサポートしません。これはエンコー...
目次序文1. 親コンポーネントが子コンポーネントに値を渡す2. サブコンポーネントのprops型制約...
最近、MySQL の起動中にエラーが発生しました。エラー メッセージは次のとおりです。 エラー 20...
ルートユーザーのパスワードを初期化するプロセスと、よくある2つの問題の解決策が含まれています。 1....
1. はじめに最近、あるプロジェクトに取り組んでいたのですが、サーバーからクライアントに返される J...
特定のデータの一括更新処理において、特定のステータスが固定値に更新されるなど、更新するフィールドの値...
前回の記事では、Docker Desktop をインストールし、Kubernetes を有効にしまし...
ギリシャ文字は、特に数学や物理学などの科学技術分野で非常によく使用される記号列であり、特定の意味を持...
リンクインスタイルとは、すべてのスタイルを 1 つ以上の外部スタイルシート ファイルに配置することで...
この記事では、ES6 の for ... of ループについて説明します。古い方法以前は、JavaS...