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 つの方法)
Shell で受信パラメータを受信する方法は 2 つあることがわかっています。 1 つはスクリプト...
この場合、transition という単語を間違って書いたため、午後中ずっとそれに取り組みました。本...
この記事では、例を挙げて mysql show 操作について説明します。ご参考までに、詳細は以下の通...
1. はじめにページを作成しているときに、複数列のレイアウトに遭遇することがあります。各列の内容が異...
問題の説明:コードをコピーコードは次のとおりです。 <meta http-equiv=&quo...
1. Dockerの紹介Docker は Linux オペレーティングシステムの一部の機能をベースに...
導入: springboot プロジェクトを実行する Docker の構成は実は非常にシンプルで、L...
1. Linuxグループの基本紹介Linux では、すべてのユーザーはグループに所属する必要があり、...
AI 画像の切り取りは PS と連携する必要があります。まず、スライスするレイヤーを選択し、それを...
CSS でレスポンシブ レイアウトを実装するレスポンシブレイアウトは非常にハイエンドで難しいように思...
title: vue は vue-meta-info を使用して各ページのタイトルとメタ情報を設定...
Server 2016 のリモート デスクトップ接続のデフォルト数は 2 ユーザーです。2 人以上...
私は最近、会社で統計レポートの開発に関わるプロジェクトに取り組んでいました。データの量が比較的多かっ...
目次IN が遅いのはなぜですか? INとEXISTSのどちらが速いでしょうか?効率を向上させるにはど...
1. コマンド > と >> の違いコマンド>: ファイルが存在する場合は、...