一二汛、更改 obj
原理:當(dāng)對象為引用類型婿崭,vue不一定能監(jiān)控到 所以當(dāng)我們新建一個對象并賦值給oldObj字段的話,直接改變了它的指向地址
oldObj = Object.assign({},newObj);
對象和數(shù)組都能用的方法:
this.$set(this,'oldArray',newArray);
this.$set(this,'oldObj',newObj);
this.$set(this.some.name,‘b’,2)
二习贫、array
這些不會改變原始數(shù)組逛球,但總是返回一個新數(shù)組千元。當(dāng)使用非變異方法時(shí)苫昌,可以用新數(shù)組替換舊數(shù)組。
push(),pop()祟身,shift()奥务,unshift(),splice()袜硫,sort()氯葬,reverse()可被vue檢測到 ,filter(), concat(), slice() 婉陷。
vue不能檢測以下變動的數(shù)組:
① 當(dāng)你利用索引直接設(shè)置一個項(xiàng)時(shí)帚称,vm.items[indexOfItem] = newValue
② 當(dāng)你修改數(shù)組的長度時(shí),例如: vm.items.length = newLength
三秽澳、使用forceUpdate()
this.$forceUpdate()闯睹,強(qiáng)制視圖更新?
vue多層循環(huán),動態(tài)改變數(shù)據(jù)后渲染的很慢或者不渲染担神。
四楼吃、異步更新隊(duì)列
解決辦法:可在數(shù)據(jù)變化之后立即使用 Vue.nextTick(callback) 。這樣回調(diào)函數(shù)在 DOM 更新完成后就會調(diào)用妄讯。