vue中數據改變,強制視圖更新,視圖不更新的原因和解決辦法
辦法1,用 Object.assign
對象改變:oldObj = Object.assign({},newObj);
原理:對象是引用類型,直接改變oldObj的某屬性指向地址沒變,vue不一定能監控到,所以當我們新建一個對象並賦值給oldObj字段的話,直接改變了它的指向地址
辦法2,用vue.set
對象和數組都能用的
this.$set(this,'oldObj',newObj);
this.$set(this,'oldArray',newArray);
例如要改變data中 some: { name: { a: 1, b: 3 } }里面b的值,可以這樣
this.$set(this.some.name,‘b’,2)
Vue不允許在已經創建的實例上動態添加新的根級響應式屬性,然而它可以使用vue.set方法將相應屬性添加到嵌套的對象上。
辦法3,使用update
this.$forceUpdate(),強制視圖更新
————————————————
版權聲明:本文為CSDN博主「tangdou5682」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/tangdou5682/article/details/99946515