Due to limitations of JavaScript, Vue cannot detect changes to the following arrays:
var vm = new Vue({ data: { items: ['a', 'b', 'c'] } }) vm.items[1] = 'x' // not responsive vm.items.length = 2 // not responsive WorkaroundManually add monitoring // Vue.set Vue.set(vm.items, indexOfItem, newValue) vm.$set(vm.items, indexOfItem, newValue) Use the array mutation method, because Vue implements responsiveness for array mutation methods // Array.prototype.splice vm.items.splice(indexOfItem, 1, newValue) Why can't I monitor changes in the two arrays in Vue2.0?The official documentation briefly summarizes these two points as being impossible to implement "due to JavaScript limitations", and Object.defineProperty is a solution for detecting data changes. Does this limitation refer to Object.defineProperty? In fact, the reason is not because of the vulnerability in Object.defineProperty(), but because of performance considerations. The performance of Object.defineProperty in an array is the same as that in an object. The index of the array can be regarded as the key in the object.
Therefore, Object.defineProperty has the ability to monitor array index changes, but vue2.x has abandoned this feature. Source code analysisObject.property can detect operations that change arrays through indexes, but Vue does not implement this. Then let's look at the source code: Vue 3.0In Vue 3.0, proxy is used instead of Object.defineProperty() to solve the existing problems. The above is the detailed content of the reasons why array changes cannot be detected in Vue2 and the solution. For more information about Vue2 array changes, please pay attention to other related articles on 123WORDPRESS.COM! You may also be interested in:
|
<<: Installation and use of mysql on Ubuntu (general version)
>>: How to store text and pictures in MySQL
Pull the image docker pull mysql View the complet...
Table of contents Introduction to NIS Network env...
You know that without it, the browser will use qui...
HTML tag: superscript In HTML, the <sup> tag...
1. Download jdk download address我下載的是jdk-8u221-li...
SVG (Scalable Vector Graphics) is an image format...
1. Solution 1.1 Describing the interface context-...
background Last week the company trained on MySQL...
I want to make a page using CSS3 rounded corners ...
Standalone hbase, let’s talk about it first. Inst...
Table of contents Add traffic function to github+...
MySQL trigger simple example grammar CREATE TRIGG...
Introduction to MQTT MQTT (Message Queuing Teleme...
Copy code The code is as follows: Difference betw...
This article summarizes common operating techniqu...