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 つの方法)
Vim は Linux でよく使用されるテキスト エディターです。 Vim は、Sublime や ...
問題: MySQL がデータ ファイルを保存するパーティションの容量が小さく、現在いっぱいになってい...
目次day.js を使用する理由モーメントデイ.js day.js がなければどうなるでしょうか? ...
win7 64 ビットで mysql-5.7.5-m15-winx64 をインストールして構成する方...
コンテナデータボリュームとはデータがコンテナ内にある場合、コンテナを削除するとデータは失われます。例...
目次1. 背景2. 複合インデックスを理解する3. 左端一致原則4. フィールド順序の影響5. 単一...
序文ミニプログラムには、ユーザーを取得するための非常に便利な API があり、getPhoneNum...
目次例えば:一般的な執筆:要約する例えば:次に、データベースのUSERテーブルにUserオブジェクト...
導入Kubernetes を使い始めるのに丸一日を費やしたことはありませんか?最近登場したいくつかの...
この記事の例では、フルスクリーンスクロールを実現するためのjQueryの具体的なコードを参考までに共...
この記事では、アコーディオンを実装するためのjQueryの具体的なコードを参考までに紹介します。具体...
1. まずMySqlの公式サイトからダウンロードします参考: https://www.jb51.ne...
ウェブデザインでは、ウェブページを美しく見せるために矢印を装飾としてよく使用します。現在、多くのウェ...
目次序文実装のアイデア実装コード成果を達成する序文これは、テーブルを動的に追加する例です。[追加] ...
目次質問サーバー層とストレージエンジン層LIMITって何ですか?何をするか?トゥカオ最近、Q&...