immer.js 合并嵌套对象

immer.js merge nested object

我想使用 immer.js

合并嵌套对象

合并两个嵌套对象一直很困难。
我想知道以下是否适用于任何图书馆..

state = {
  lv1_1: {
    lv2_1: {
      lv3_1: 'foo1',
      lv3_2: 'foo2',
    },
    lv2_2: {
      lv3_2: 'foo2'
    }
  },
  lv1_2: {
    lv2_1: 'foo'
  }
}



lv1_1 = {
  lv2_1: {
    lv3_1: 'bar'
  }
}

合并 lv1_1 与状态,我想要以下输出。

state = {
  lv1_1: {
    lv2_1: {
      lv3_1: 'bar',
      lv3_2: 'foo2',
    },
    lv2_2: {
      lv3_2: 'foo2'
    }
  },
  lv1_2: {
    lv2_1: 'foo'
  }

}

我试过immerse.js但是下面的代码 draft.lv1_1 = {...draft.lv1_1, ...lv1_1} 好像给

state = {
  lv1_1: {
    lv2_1: {
      lv3_1: 'bar'
    }
  }
}

I wonder if the following is possible with any library..

你可以试试lodash.merge:

const a = {
  lv1_1: {
    lv2_1: {
      lv3_1: 'foo1',
      lv3_2: 'foo2'
    },
    lv2_2: {
      lv3_2: 'foo2'
    }
  },
  lv1_2: {
    lv2_1: 'foo'
  }
};

const b = {
  lv1_1: {
    lv2_1: {
      lv3_1: 'bar'
    }
  }
};
console.log(_.merge(a, b));