参考资料
练习题 icon lost
交流讨论
付费专栏
我的笔记
专栏课程

Vue2数组和对象的响应式检测变化

  • 数组
  1. 用index来操作数组中的元素,不会被检测
  2. 用length属性来改变数组长度不会被检测
// 状态
data () {
return {
	arr: [1, 2, 3, 4]
}

arr[4] = 5 // index
arr.length = 6 // length 
// Vue2不能检测到变化
  • 解决方法
  1. vue全局方法Vue.set(arr, index, value)
  2. splice()
Vue.set(arr, 4, 5)
arr.splice(4, 1, 5)
arr.splice(6)
  • 对象
  1. 属性的添加和删除不能被检测: 只有在data中的对象属性才会被转化为getter和setter
  • 解决
  1. Vue.set(obj, newPro, newValue)
  2. obj.assign({}, oldobj, newobj)
data () {
	return {
		obj: {
			a: 1,
			b:2
		}
	}
}
Vue.set(this.obj, 'c', 3)
this.obj.assign({}, this.obj, { b: 3 })
资料来源 Vue2数组和对象的响应式检测变化
博客作者 LLtaishuai
前往答题
发布见解