av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

解決vue無法偵聽數(shù)組及對(duì)象屬性的變化問題

瀏覽:4日期:2023-01-06 16:12:37

一、數(shù)組

1、可以監(jiān)聽到的情況

如push、splice、=賦值(array=[1,2,3])

2、無法監(jiān)聽到的情況

使用下標(biāo)修改某個(gè)元素(這種比較常見)

array[index] = 1

object.a = 3

直接修改數(shù)組length

array.length = 5

3、解決方案

this.$set(array, index, data) - 這是個(gè)深度的修改,某些情況下可能導(dǎo)致你不希望的結(jié)果,因此最好還是慎用this.dataArr = this.originArrthis.$set(this.dataArr, 0, {data: ’修改第一個(gè)元素’})console.log(this.dataArr) console.log(this.originArr) //同樣的 源數(shù)組也會(huì)被修改 在某些情況下會(huì)導(dǎo)致你不希望的結(jié)果

上面提到的splice方法進(jìn)行增刪改

利用臨時(shí)變量進(jìn)行中轉(zhuǎn)

let tempArr = [...this.targetArr]tempArr[0] = {data: ’test’}this.targetArr = tempArr

二、對(duì)象

對(duì)象和數(shù)組都是js里的引用類型,在實(shí)際存儲(chǔ)中,數(shù)據(jù)是存儲(chǔ)在堆中的,利用存儲(chǔ)在棧里的對(duì)象名或者數(shù)組名的指針進(jìn)行索引,因此也存在在淺拷貝和深拷貝以及等號(hào)賦值時(shí),到底是僅僅新建了一個(gè)指針指向了同一份數(shù)據(jù),還是兩個(gè)指針分別指向了兩份完全一樣的數(shù)據(jù)的問題

1、可以監(jiān)聽到的

對(duì)象的直接=賦值

this.obj = {name: ’test’}

2、無法監(jiān)聽到的

對(duì)象屬性的增刪改

obj: { prop1: ’data1’, prop2: ’data2’}...// 增this.obj.prop3 = ’data3’// 刪delete this.obj.prop1// 改this.obj.prop1 = ’data4’

3、解決辦法

this.$set(obj, key ,value) - 可實(shí)現(xiàn)增、改watch時(shí)添加deep:true深度監(jiān)聽,只能監(jiān)聽到屬性值的變化,新增、刪除屬性無法監(jiān)聽this.$watch(’blog’, this.getCatalog, { deep: true // immediate: true // 是否第一次觸發(fā) });watch時(shí)直接監(jiān)聽某個(gè)keywatch: { ’obj.name’(curVal, oldVal) { // TODO }}object.assign()+直接=賦值this.watchObj = Object.assign({}, this.watchObj, { name: ’xiaoyue’, age: 15,});

補(bǔ)充知識(shí):vue 監(jiān)聽不到數(shù)組或?qū)ο笾档淖兓趺崔k

一、vue監(jiān)聽數(shù)組的變化

vue能購(gòu)監(jiān)聽到數(shù)組變化的場(chǎng)景

通過賦值的形式改變正在被監(jiān)聽的數(shù)組;

通過splice(index, num, val) 的形式改變正在被監(jiān)聽的數(shù)組;

通過數(shù)組的push的形式改變正在被監(jiān)聽的數(shù)組。

vue無法監(jiān)聽數(shù)組變化的場(chǎng)景

通過數(shù)組索引改變數(shù)組元素的值;

改變數(shù)組的長(zhǎng)度;

vue無法監(jiān)聽數(shù)組變化的場(chǎng)景

this.$set(arr, index, newVal);

通過splice(index,num,val);

使用臨時(shí)變量作為中轉(zhuǎn),重新賦值數(shù)組;

二、vue監(jiān)聽對(duì)象的變化

vue能夠監(jiān)聽到對(duì)象變化的場(chǎng)景

通過直接賦值的場(chǎng)景。

eg:watchObj = {name:“zyk”}

vue無法監(jiān)聽到對(duì)象變化的場(chǎng)景

對(duì)象的增加、刪除、修改無法被vue監(jiān)聽到

vue解決無法監(jiān)聽對(duì)象變化的方法

使用 this.$set(object, key, value)(vue 無法監(jiān)聽 this.set 修改原有屬性)

使用Object.assign(),直接賦值的原理;(推薦使用)

以上這篇解決vue無法偵聽數(shù)組及對(duì)象屬性的變化問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 欧美一级黄色片免费观看 | 九九综合 | 一级毛片大全免费播放 | 国产精品毛片一区二区在线看 | 日韩在线播放一区 | 久久在视频 | 亚洲午夜在线 | 在线观看亚洲欧美 | 国产精品一区二区三区四区 | 欧美日韩一区不卡 | 日韩一区二区在线视频 | 中文字幕在线免费观看 | 久久久久国产一区二区三区 | 日韩精品在线免费观看 | 插插插干干干 | 久久国产精品一区二区三区 | 免费一区 | 精品久久久久久18免费网站 | 国产亚洲一区在线 | 亚洲综合日韩精品欧美综合区 | 一区二区三区免费 | 精品亚洲一区二区三区四区五区高 | 国产成人综合久久 | av电影一区二区 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 国产99久久精品一区二区永久免费 | 成人aaa视频| 岛国精品| 色妞av | 久久久片| 国产日韩久久 | 国产美女黄色 | 亚洲精品电影网在线观看 | 亚洲欧洲一区二区 | 三级黄视频在线观看 | 91精品久久久久久久久 | 91中文视频 | 久久久久国产精品www | 久久免费精品视频 | 国产成人a亚洲精品 | 日韩免费一区二区 |