在 Vue 中,你可以使用 Vue.set(object, key, value)
方法来深度监听一个对象的变化。例如:
const obj = { foo: 'bar' }
Vue.set(obj, 'newProp', 123)
这样,当 obj.newProp
发生变化时,Vue 就会触发更新。你也可以使用 vm.$set
实例方法来实现同样的功能。
constvm = new Vue({
data: {
obj: { foo: 'bar' }
}
})
vm.$set(vm.obj, 'newProp', 123)
还有一种方法是使用 Vue.observable
方法,它可以将一个普通的 JavaScript 对象转化成响应式对象。例如:
const state = Vue.observable({
count: 0
})
这样,当 state.count
发生变化时,Vue 就会触发更新。
最后,如果你想监听一个数组的变化,你可以使用下列方法之一:
vm.$set(vm.array, index, value)
vm.array.splice(index, 1, value)
以上方法都可以触发 Vue 的更新。