vue数组和对象的响应式

vue数组和对象的响应式

Vue 无法探测普通的新增 property(官方文档中说明)

vue2无法检测到通过下标改变数组对应的索引值的变化但是可以检测到对象数组中对象元素(即某一索引值)的原有属性值的变化。同时原有属性的删除,以及新属性的添加都无法检测到。独立对象中的属性亦如此。

对数组本身的操作可以检测到,比如:push,pop等

  • 原有属性值的删除可通过Vue.delete( target, propertyName/index ) 来触发响应式
  • 添加新属性或改变基本类型数组的值需通过Vue.set( target, propertyName/index, value ) 来添加响应式

例:

data(){
    return{
        list1:[1,2,3,4,5,6,...],
        list2:[{name:'kitty'},{name:'hobo'},...],
        obj:{name:'hobo'}
    }
}
method:{
    change1(index){
        this.list1[index]=999;//非响应式
        Vue.set(this.list1,index,999);//响应式

        this.list2[index]={name:'eddie'};//非响应式
        this.list2[index].name='eddie';//响应式

        delete this.list2[index].name;//非响应式
        Vue.delete(this.list2[index],'name');//响应式

        this.list2[index].age=18;//非响应式
        Vue.set(this.list2[index],'age',18);//响应式

        obj={name:'eddie'};//响应式
        obj.name='eddie';//响应式
        obj.age='18';//非响应式
        delete obj.name;//非响应式
        
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值