本篇為《[那些關於 Vue 的小細節 ] 為什麼畫面沒有隨資料更新 – Vue 響應式原理(Reactivity)》的統整,請去查看原文章。
使用 Vue 一段時間,遇到複雜的資料格式,經常會有「畫面怎麼沒有更新」的問題,尤其是物件和陣列特別常遇到,以下節錄各個情況的解決方案。
物件部分:一開始沒有被註冊到的屬性不會響應式更新
- 方法一:在 data 中要把所有需要響應式的資料設定進去。
- 方法二:使用
vm.$set()
動態添加新的響應式屬性。 - 方法三:透過
Object.assign()
建立新的物件。
陣列部分:利用陣列索引直接設值時
以陣列索引值的方式修改資料內容時,Vue 無法監測到。
- 方法一:使用 Vue 可觀察到的陣列方法。
在 Vue 中包含一組可以觀察陣列的方法,而這些方法將能促使畫面重新渲染。這些方法包含:push()
、pop()
、shift()
、unshift()
、splice()
、sort()
、reverse()
。 - 方法二:使用
vm.$set()
動態添加新的資料。