immer库的个人总结使用

复杂数据问题

copy 原来的对象,改变会影响到原来的,典型的拷贝问题

const obj_1 = {
      a: '1',
    };
    //赋值引用数据类型,改变会影响原来的
    console.log('obj_1', obj_1);

    const obj_2 = obj_1;
    obj_2.a = '2';
    console.log('obj_1', obj_1);
    console.log('obj_2', obj_2);

immer解决

produce参数1是数据源,参数2为拷贝了数据源,且互不影响

 // immer 解决
import { set } from 'lodash';
    const state = {
      a: '1',
    };
    //produce包裹数据并深拷贝数据,并且可以处理,这个函数的的值是处理好的数据
    function getobj1() {
      return produce(state, (draftState: any) => {
        set(draftState, 'b', '2');
      });
    }
    const getobj2 = () => {
      const nextState = produce(state, (draftState: any) => {
        set(draftState, 'c', '3');
      });
      return { ...nextState };
    };
    console.log('getobj1()', getobj1());
    console.log('state', state);
    console.log('getobj2()', getobj2());
    console.log('state', state);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值