vue2响应式缺陷
响应式 : 数据改变 ==> 视图跟着改变vue2响应式缺陷1.对象新增的属性没有响应式对象,新增属性b,修改b的值,值改变但视图并未更新解决方案 : 使用vue提供的 api $set(对象,属性名,值) 效果如属性c2.数组的部分操作没有响应式数组中有7种操作有响应式array.pop()array.push()array.shift()array.unshift()array.sort
·
响应式 : 数据改变 ==> 视图跟着改变
vue2响应式缺陷
1.对象新增的属性没有响应式
对象,新增属性b,修改b的值,值改变但视图并未更新
解决方案 : 使用vue提供的 api $set(对象,属性名,值) 效果如属性c
2.数组的部分操作没有响应式
数组中有7种操作有响应式
- array.pop()
- array.push()
- array.shift()
- array.unshift()
- array.sort()
- arry.reverse()
- array.splice()
以上7中API会修改原数组(vue2的内部重写了这7个API)
其他的操作都不会有响应式
示例:
1.修改数组的第一个元素的值
// 直接通过下标来修改,没有响应式
fn1() {
this.arr[0] = 100
}
通过下标直接赋值,没有响应式
2.修改数组的长度为0
//修改数组的length
fn2 () {
this.arr.length = 0
}
修改数组的length,没有响应式
如何修改数组的值有响应式
fn1 () {
// 方法1: 先删除,再添加
this.arr.splice(0,1,100)
},
fn2 () {
// 方法2: $set
this.$set(this.arr, "0", 100)
}
更多推荐
已为社区贡献1条内容
所有评论(0)