vue改變對象或數(shù)組時的刷新機制的方法總結(jié)
Vue數(shù)據(jù)響應(yīng)原理
官方的解釋很清晰:
當你把一個普通的 JavaScript 對象傳給 Vue 實例的 data 選項,Vue 將遍歷此對象所有的屬性,并使用 Object.defineProperty 把這些屬性全部轉(zhuǎn)為 getter/setter。Object.defineProperty 是ES5 中一個無法 shim 的特性,這也就是為什么 Vue 不支持 IE8 以及更低版本瀏覽器的原因。 用戶看不到 getter/setter,但是在內(nèi)部它們讓 Vue 追蹤依賴,在屬性被訪問和修改時通知變化。這里需要注意的問題是瀏覽器控制臺在打印數(shù)據(jù)對象時 getter/setter 的格式化并不同,所以你可能需要安裝 vue-devtools 來獲取更加友好的檢查接口。 每個組件實例都有相應(yīng)的 watcher 實例對象,它會在組件渲染的過程中把屬性記錄為依賴,之后當依賴項的 setter 被調(diào)用時,會通知 watcher 重新計算,從而致使它關(guān)聯(lián)的組件得以更新。
總結(jié):
1.數(shù)組更改值或者增加刪除值,不會觸發(fā)更新。
2.對象更改值可觸發(fā)更新,增加或者刪除屬性不會觸發(fā)更新。
3.對象數(shù)組:數(shù)組中的對象更改值會觸發(fā)更新。
一、純數(shù)組-------showArr:[true,true]
數(shù)組中元素直接賦值,---不觸發(fā)刷新
this.showArr[0]=!this.showArr[0];
數(shù)組修改后整體賦值,---不觸發(fā)刷新
var parr=this.showArr; parr[0]=!parr[0]; this.showArr=parr;
數(shù)組重新復制出一份新的,修改后整體賦值,---可觸發(fā)刷新
var parr=this.showArr.slice(0); parr[0]=!parr[0]; this.showArr=parr;
用$set賦值,---可觸發(fā)刷新
this.$set(this.showArr,0,!this.showArr[0])
二、純對象-------showArr:{'showBool':true}
對象中元素直接賦值,---可觸發(fā)刷新
this.showArr['showBool']=!this.showArr['showBool'];
對象修改后整體賦值,---可觸發(fā)刷新
var parr=this.showArr; parr['showBool']=!parr['showBool']; this.showArr=parr;
用$set賦值,---可觸發(fā)刷新
this.$set(this.showArr,'showBool',!this.showArr['showBool']);
三、 對象數(shù)組-------showArr:[{'showBool':true},{'showBool':true}]
數(shù)組中元素直接賦值,---可觸發(fā)刷新
this.showArr[0]['showBool']=!this.showArr[0]['showBool'];
數(shù)組修改后整體賦值,---可觸發(fā)刷新
var parr=this.showArr; parr[0]['showBool']=!parr[0]['showBool']; this.showArr=parr;
數(shù)組重新復制出一份新的,修改后整體賦值,---可觸發(fā)刷新
var parr=this.showArr.slice(0); parr[0]['showBool']=!parr[0]['showBool']; this.showArr=parr;
用$set賦值,---可觸發(fā)刷新
this.$set(this.showArr[0],'showBool',!this.showArr[0]['showBool']);
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
uniapp?APP中內(nèi)嵌webview的H5與APP相互通訊動態(tài)傳參代碼示例
最近外部公司的app要接入我司的uni H5項目,所以這篇文章主要給大家介紹了關(guān)于uniapp?APP中內(nèi)嵌webview的H5與APP相互通訊動態(tài)傳參的相關(guān)資料,需要的朋友可以參考下2024-04-04
vue項目使用luckyexcel預覽excel表格功能(心路歷程)
這篇文章主要介紹了vue項目使用luckyexcel預覽excel表格,我總共嘗試了2種方法預覽excel,均可實現(xiàn),還發(fā)現(xiàn)一種方法可以實現(xiàn),需要后端配合,叫做KKfileview,本文給大家介紹的非常詳細,需要的朋友可以參考下2023-10-10
使用Vue綁定class和style樣式的幾種寫法總結(jié)
這篇文章主要介紹了使用Vue綁定class和style樣式的幾種寫法,文章通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下2023-07-07

