Solution to Vue's inability to watch array changes

Solution to Vue's inability to watch array changes

1. Vue listener array

Vue can actually monitor array changes, such as

data () {
  return {
    watchArr: [],
  };
},
watchArr (newVal) {
  console.log('Listening: ' + newVal);
},
created () {
  setTimeout(() => {
    this.watchArr = [1, 2, 3];
  }, 1000);
},

For example, use splice(0,2,3) to delete two elements from array index 0 and insert an element 3 at index 0.

data () {
  return {
    watchArr: [1, 2, 3],
  };
},
watchArr (newVal) {
  console.log('Listening: ' + newVal);
},
created () {
  setTimeout(() => {
    this.watchArr.splice(0, 2, 3);
  }, 1000);
},

The push array can also be monitored.

2. Situations where vue cannot monitor array changes

However, arrays cannot be monitored in the following two situations

  • When setting an array item directly using an index, for example, arr[indexofitem]=newValue
  • When modifying the length of an array, for example, arr.length = newLength

Example of a situation where array changes cannot be monitored

1. Use indexes to modify array values ​​directly

data () {
  return {
    watchArr: [{
      name: 'krry',
    }],
  };
},
watchArr (newVal) {
  console.log('Listening: ' + newVal);
},
created () {
  setTimeout(() => {
    this.watchArr[0].name = 'xiaoyue';
  }, 1000);
},

2. Modify the length of the array

  • If the length is greater than the original array, the subsequent elements are set to undefined
  • If the length is less than the original array, the extra elements will be truncated.
data () {
  return {
    watchArr: [{
      name: 'krry',
    }],
  };
},
watchArr (newVal) {
  console.log('Listening: ' + newVal);
},
created () {
  setTimeout(() => {
    this.watchArr.length = 5;
  }, 1000);
},

This is the end of this article about Vue not being able to watch array changes. For more related content about Vue not being able to watch array changes, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Details of watch monitoring properties in Vue
  • Detailed explanation of the basic usage of VUE watch listener
  • Reasons and solutions for multiple executions of the watch method when Vue monitors route changes
  • Vue watch about property monitoring in objects
  • Summary of Vue watch monitoring methods

<<:  Detailed explanation of Docker usage under CentOS8

>>:  Reasons and optimization solutions for slow MySQL limit paging with large offsets

Recommend

Ubuntu 16.04 image complete installation tutorial under VMware

This article shares with you the installation tut...

How to configure MySQL on Ubuntu 16.04 server and enable remote connection

background I am learning nodejs recently, and I r...

Sample code for implementing PC resolution adaptation in Vue

Table of contents plan Install Dependencies Intro...

Detailed explanation of how to introduce custom fonts (font-face) in CSS

Why did I use this? It all started with the makin...

JavaScript implements product details of e-commerce platform

This article shares a common example of viewing p...

Ubuntu 16.04 mysql5.7.17 open remote port 3306

Enable remote access to MySQL By default, MySQL u...

6 interesting tips for setting CSS background images

Background-image is probably one of those CSS pro...

Comprehensive analysis of isolation levels in MySQL

When the database concurrently adds, deletes, and...

Docker installs ClickHouse and initializes data testing

Clickhouse Introduction ClickHouse is a column-or...

How to use css variables in JS

How to use css variables in JS Use the :export ke...

Solve the problem of docker log mounting

The key is that the local server does not have wr...

Echarts tutorial on how to implement tree charts

Treemaps are mainly used to visualize tree-like d...