亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

解決vue無(wú)法偵聽(tīng)數(shù)組及對(duì)象屬性的變化問(wèn)題

 更新時(shí)間:2020年07月17日 09:50:58   作者:sue7  
這篇文章主要介紹了解決vue無(wú)法偵聽(tīng)數(shù)組及對(duì)象屬性的變化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

一、數(shù)組

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

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

2、無(wú)法監(jiān)聽(tīng)到的情況

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

array[index] = 1

object.a = 3

直接修改數(shù)組length

array.length = 5

3、解決方案

this.$set(array, index, data) - 這是個(gè)深度的修改,某些情況下可能導(dǎo)致你不希望的結(jié)果,因此最好還是慎用
this.dataArr = this.originArr
this.$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里的引用類(lèi)型,在實(shí)際存儲(chǔ)中,數(shù)據(jù)是存儲(chǔ)在堆中的,利用存儲(chǔ)在棧里的對(duì)象名或者數(shù)組名的指針進(jìn)行索引,因此也存在在淺拷貝和深拷貝以及等號(hào)賦值時(shí),到底是僅僅新建了一個(gè)指針指向了同一份數(shù)據(jù),還是兩個(gè)指針?lè)謩e指向了兩份完全一樣的數(shù)據(jù)的問(wèn)題

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

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

this.obj = {name: 'test'}

2、無(wú)法監(jiān)聽(tīng)到的

對(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)聽(tīng),只能監(jiān)聽(tīng)到屬性值的變化,新增、刪除屬性無(wú)法監(jiān)聽(tīng)
this.$watch('blog', this.getCatalog, {
  deep: true
  // immediate: true // 是否第一次觸發(fā)
 });
watch時(shí)直接監(jiān)聽(tīng)某個(gè)key
watch: {
 'obj.name'(curVal, oldVal) {
  // TODO
 }
}
object.assign()+直接=賦值
this.watchObj = Object.assign({}, this.watchObj, {
 name: 'xiaoyue',
 age: 15,
});

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

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

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

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

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

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

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

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

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

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

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

通過(guò)splice(index,num,val);

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

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

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

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

eg:watchObj = {name:“zyk”}

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

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

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

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

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

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

相關(guān)文章

  • Vue中Mustache引擎插值語(yǔ)法使用詳解

    Vue中Mustache引擎插值語(yǔ)法使用詳解

    在Vue中通過(guò)Mustache模板引擎將data中的文本數(shù)據(jù)插入到HTML中,下面這篇文章主要給大家介紹了關(guān)于Vue中Mustache模板引擎插值語(yǔ)法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • vue遞歸獲取父元素的元素實(shí)例

    vue遞歸獲取父元素的元素實(shí)例

    這篇文章主要介紹了vue遞歸獲取父元素的元素實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • 詳解Vue如何進(jìn)行分布式事務(wù)管理以及解決方案

    詳解Vue如何進(jìn)行分布式事務(wù)管理以及解決方案

    在分布式系統(tǒng)中,事務(wù)管理是一個(gè)非常重要的問(wèn)題,所以本文將介紹一下Vue中如何進(jìn)行分布式事務(wù)管理以及分布式事務(wù)解決方案,希望對(duì)大家有所幫助
    2023-06-06
  • 利用vue重構(gòu)有贊商城的思路以及總結(jié)整理

    利用vue重構(gòu)有贊商城的思路以及總結(jié)整理

    這篇文章主要介紹了利用vue重構(gòu)有贊商城的思路以及總結(jié)整理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • 聊聊vue 中的v-on參數(shù)問(wèn)題

    聊聊vue 中的v-on參數(shù)問(wèn)題

    這篇文章主要介紹了聊聊vue 中的v-on參數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • Vue.js父與子組件之間傳參示例

    Vue.js父與子組件之間傳參示例

    本篇文章主要介紹了Vue.js父與子組件之間傳參示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • vue前端通過(guò)騰訊接口獲取用戶ip的全過(guò)程

    vue前端通過(guò)騰訊接口獲取用戶ip的全過(guò)程

    今天在寫(xiě)項(xiàng)目掉接口的時(shí)候有一個(gè)接口需要到了用戶的ip地址,查了半天覺(jué)得這個(gè)方法不錯(cuò),下面這篇文章主要給大家介紹了關(guān)于vue前端通過(guò)騰訊接口獲取用戶ip的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 詳解vue移動(dòng)端項(xiàng)目的適配(以mint-ui為例)

    詳解vue移動(dòng)端項(xiàng)目的適配(以mint-ui為例)

    這篇文章主要介紹了詳解vue移動(dòng)端項(xiàng)目的適配(以mint-ui為例),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Vue AST源碼解析第一篇

    Vue AST源碼解析第一篇

    這篇文章主要為大家詳細(xì)介紹了Vue AST源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 使用 Element UI Table 的 slot-scope方法

    使用 Element UI Table 的 slot-scope方法

    這篇文章主要介紹了使用 Element UI Table 的 slot-scope方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評(píng)論