this.$set()
的主要功能是解決改變數據時未驅動視圖的改變的問題,也就是實際數據被改變了,但我們看到的頁面並沒有變化,這里主要講this.$set()
的用法,如果你遇到類似問題可以嘗試下,vue官網寫的是Vue.set,和this.$set()
是一樣的,但要注意當前this的指向問題,你要記住時this.$set()
時當前this的指向一定要是最外層。
vue和uniapp語法大部分都是相同的,uniapp是針對移動端的,並且可以開發小程序,最重要的區別是uniapp開發小程序時不能操作dom,注意,是不能,不是不建議,操作DOM后編譯代碼時會報錯。
先寫下數據
items: [
{ message: "one", id: "1" },
{ message: "two", id: "2" },
{ message: "three", id: "3" }
]
通常我們改變某個message會這么寫
this.items[0].message='one1'; //這么寫一般是可以更新視圖的 我只是給舉this.$set()用法的例子
使用this.$set()時
this.$set(this.items[0],'message','one1');//改成數字類型就不用了加引號
有的時候我們可能一次改多個
this.items[0]={ message: "one3", id: "13" };
使用this.$set()時, 格式this.$set( target, key, value )
this.$set( this.items, 0, { message: "one3", id: "13" })
給大家復現一種不渲染的例子:當前我們數組內有三條對象,那么我想加一條,並且我就不用類似push的東西,還要能渲染到視圖
普通寫法 不渲染
this.items[3]={ message: "four", id: "4" };//數據已經被改變 但是視圖層沒渲染,我們看不到
使用this.$set()時, 格式this.$set( target, key, value )
this.$set( this.items, 3, { message: "four", id: "4" })//這樣就可以渲染到視圖層了