前言
在Vue中,響應式(reactivity)是Vue的一大特色,但由於 JavaScript 的限制,有些情況Vue不能檢測array或object的變化來及時渲染頁面,這篇主要針對array來迴避這個問題,以及如何讓他即時渲染。
不能監測的情況
Vue不能監測以下數據變化:
直接賦值
1
vm.items[indexOfItem] = newValue
修改數組長度
1
vm.items.length = newLength
如何即時渲染
舉例:
1 | var vm = new Vue({ |
以下兩種方法都可以實現和vm.items[indexOfItem] = newValue
同樣效果,
同時也會在Reactivity System觸發狀態更新。
1 | vm.$set(vm.items, indexOfItem, newValue) |
1 | vm.items.splice(newLength) |