解決vue中修改了數(shù)據(jù)但視圖無法更新的情況
我們有時(shí)候常碰到vue中明明修改了數(shù)據(jù),但是視圖無法更新,因此我總結(jié)了一點(diǎn)點(diǎn)碰到此類的情況:
1、v-for遍歷的數(shù)組,當(dāng)數(shù)組內(nèi)容使用的是arr[0].xx =xx更改數(shù)據(jù),vue無法監(jiān)測(cè)到
數(shù)組數(shù)據(jù)變動(dòng):我們使用某些方法操作數(shù)組,變動(dòng)數(shù)據(jù)時(shí),有些方法無法被vue監(jiān)測(cè),有些可以
Vue包裝了數(shù)個(gè)數(shù)組操作函數(shù),使用這些方法操作的數(shù)組去,其數(shù)據(jù)變動(dòng)時(shí)會(huì)被vue監(jiān)測(cè):
push()
pop()
shift()
unshift()
splice()
sort()
reverse()
vue2.0還增加個(gè)方法可以觀測(cè)Vue.set(items, indexOfItem, newValue)
filter(), concat(), slice() 。這些不會(huì)改變?cè)紨?shù)組,但總是返回一個(gè)新數(shù)組。當(dāng)使用非變異方法時(shí),可以用新數(shù)組替換舊數(shù)組
Vue 不能檢測(cè)以下變動(dòng)的數(shù)組:
① 當(dāng)你利用索引直接設(shè)置一個(gè)項(xiàng)時(shí),vm.items[indexOfItem] = newValue
② 當(dāng)你修改數(shù)組的長(zhǎng)度時(shí),例如: vm.items.length = newLength
話不多說,上代碼,并且附上效果圖:
<body>
<div id="app">
<ul>
<li v-for="(item,index) in gc">
<span>{{item.name}}-{{index}}</span>
<span>{{item.age}}-{{index}}</span>
</li>
</ul>
<button @click="add">click</button>
</div>
<script>
new Vue({
el:'#app',
data:{
gc:[
{name:'zhangsan',age:10},
{name:'lisi',age:21},
{name:'wangwu',age:22},
{name:'wangwu',age:22}
]
},methods:{
// 當(dāng)點(diǎn)擊事件觸發(fā)時(shí)候會(huì)修改掉gc[0]的值為lisi,但是視圖不會(huì)發(fā)生變化
add(){
this.gc[0] ={name:'lisi',age:22}
}
}
})
</script>
</body>


以上Vue 不能檢測(cè)數(shù)據(jù)變動(dòng)的數(shù)組的2種方式解決辦法
將代碼中的add()方法改為:
add(){
// this.gc[0] ={name:'lisi',age:22} //這樣直接修改不能被vue監(jiān)聽到
Vue.set(this.gc,0,{name:'lisi',age:22}) //這樣就能被vue監(jiān)控到,更新視圖
}

以上這篇解決vue中修改了數(shù)據(jù)但視圖無法更新的情況就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決打包后出現(xiàn)錯(cuò)誤y.a.addRoute is not a function的
這篇文章主要介紹了解決打包后出現(xiàn)y.a.addRoute is not a function的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
vue elementUI table 自定義表頭和行合并的實(shí)例代碼
這篇文章主要介紹了vue elementUI table 自定義表頭和行合并的實(shí)例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
Vue3中使用echarts的簡(jiǎn)單七個(gè)步驟(易懂,附緊急避坑)
近期在做一個(gè)vue3的項(xiàng)目,里面有個(gè)圖表需求,因公司之前使用第三方封裝的圖表缺少文檔,就去看了echars的官網(wǎng)文檔,引入原生echars來實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于Vue3中使用echarts的簡(jiǎn)單七個(gè)步驟,需要的朋友可以參考下2023-01-01
vue 自定義組件 v-model雙向綁定、 父子組件同步通信的多種寫法
父子組件通信,都是單項(xiàng)的,很多時(shí)候需要雙向通信。這篇文章主要介紹了vue 自定義組件 v-model雙向綁定、 父子組件同步通信,需要的朋友可以參考下2017-11-11
Vue輸入框?qū)崟r(shí)驗(yàn)證IP地址合法性并在下方進(jìn)行提示功能實(shí)現(xiàn)
在Vue組件中的IP地址輸入框定義一個(gè)checkIpAddress方法,該方法使用正則表達(dá)式對(duì)傳入的IP地址進(jìn)行驗(yàn)證,這篇文章主要介紹了Vue輸入框?qū)崟r(shí)驗(yàn)證IP地址合法性并在下方進(jìn)行提示,需要的朋友可以參考下2024-06-06
Vue.js綁定HTML class數(shù)組語法錯(cuò)誤的原因分析
Vue.js綁定HTML class數(shù)組語法錯(cuò)誤有哪些原因?qū)е碌哪?,該如何解決呢?下面小編給大家分享Vue.js綁定HTML class數(shù)組語法錯(cuò)誤的原因分析,感興趣的朋友一起看看吧2016-10-10
Vue.js遞歸組件實(shí)現(xiàn)組織架構(gòu)樹和選人功能案例分析
這篇文章主要介紹了Vue.js遞歸組件實(shí)現(xiàn)組織架構(gòu)樹和選人功能,本文通過案例代碼講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
詳解vue-router的Import異步加載模塊問題的解決方案
這篇文章主要介紹了詳解vue-router的Import異步加載模塊問題的解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05

