我想使用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'
}
}
}发布于 2020-03-22 09:36:39
我想知道在任何一个库中是否可能出现以下情况。
你可以试试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));发布于 2022-07-14 04:56:54
试一试:
import produce, { current } from 'immer'
import _ from 'lodash'
produce(a, (draft) => {
_.merge(current(draft), b)
})https://stackoverflow.com/questions/60797579
复制相似问题