JS利用解构赋值更新对象某些属性

引言

今天在看vue3+TS的后台管理项目时候,发现了一个有趣的东西,框架作者在vuex更新state中的一个对象的某些属性时候,用到了解构赋值,更新对象某些属性有很多种方法,但是这个比较新颖,和其他方法一起分享出来。

用处便是遇到很庞大的对象时候,复用大部分属性,只更新一小部分属性。

总结

老样子,先给总结。

  • 解构赋值法(...)

//需要更新的源对象
let state={
    name:'genting',
    sex:'male',
    list:[1,2,3]
}

//进行了某些操作,比如接口获取了更新数据
//需要更新的数据
let obj2={
    name:'incubus',
    age:18,//新增的数据
    list:[4,5,6]||[]//覆盖或清空
}

//...state需要在最上面,否则不能覆盖/更新
let obj1={
    //源对象
    ...state,

    //更新的数据
    /* name:'incubus',
    age:18,//新增的数据
    list:[4,5,6]||[]//覆盖或清空 */

    //或者这样写法
    ...obj2
}

state=obj1

/* 结果
    state={
        name:'incubus',//更新了
        sex:'male',//复用
        age:18,//新增了
        list:[4,5,6]//更新了
    } 
*/

  • 对象方法(Object.assign)

let state={
    name:'genting',
    sex:'male',
    list:[1,2,3]
}

//进行了某些操作,比如接口获取了更新数据
//需要更新的数据
let obj2={
    name:'incubus',
    age:18,
    list:[4,5,6]||[]//覆盖或清空
}

state=Object.assign(state,obj2)//注意顺序

/* 结果
state={
    name:'incubus',//更新了
    sex:'male',//复用
    age:18,//新增了
    list:[4,5,6]//更新了
} 
*/

此方法也可以用来组合新对象,拷贝对象

  • 手动赋值......

好像vue2里的,如果需要响应式,就得手动$set(obj,key,value)了

有时候赋值对象没有的键名会报错。尽量避免这种操作。

注意点

原理都是用了后者覆盖前者。

但是解构赋值这个比较特殊,因为直接写是不能通过的。很有趣的写法,遇到可不要不认识了。

let obj={
    list:[],
    list:[4,5,6]||[]//报错
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值