前情提要:以下三种情况Vue 不能检测数组和对象的变化
- 对象中 property 的添加或移除:
testObj.a='参数' //testObj没有参数a
- 使用索引直接设置一个数组项:
testArray[1]='数组项'
- 修改数组长度:
testArray.length = 4
此时就需用使用this.set()/this.$set()
来保证他们的响应性。
(vm.$set
是全局Vue.set
方法的别名)
一. 用法
this.$set( target, key, value )
,其中:
target:要更改的数据源(可以是对象或者数组)
key:要更改的具体数据(对象属性名或者数组下标)
value :重新赋的值
二. 具体实践
data() {
return {
testArray: [],
testObj: {},
}
},
created() {
this.$set(this.testArray, 0, '1')
this.$set(this.testObj, 'Name', 'name')
console.log('数组', this.testArray)
console.log('对象', this.testObj)
}
三. 效果:
参考链接:
4. https://cn.vuejs.org/v2/guide/reactivity.html#%E6%A3%80%E6%B5%8B%E5%8F%98%E5%8C%96%E7%9A%84%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9
5. https://www.cnblogs.com/qlb-7/p/12746481.html