让我们说我的对象看起来像这样:
const state = {
meta: {
attrs: [ 'dude' ],
data: {
foo: 'bar',
stuff: [
'x',
'y',
]
},
},
}
我想将一个对象作为子项添加到data
属性中,创建它:
const state = {
meta: {
attrs: [ 'dude' ],
data: {
foo: 'bar',
stuff: [
'x',
'y',
],
hello: 'world',
},
},
}
注意,在hello: 'world'
对象中添加data
作为子项:
使用Object.assign
我知道我可以通过这种方式完成任务:
const hello = {
hello: 'world',
}
const data = Object.assign(
{},
state.meta.data,
hello,
)
const meta = Object.assign(
{},
state.meta,
{
data,
},
)
const updatedState = Object.assign(
{},
state,
{
meta,
},
)
是否可以使用较少的Object.assign
次来电来完成此任务?
答案 0 :(得分:2)
您可以使用spread运算符语法和
来执行此操作
const state = {
meta: {
attrs: [ 'dude' ],
data: {
foo: 'bar',
stuff: [
'x',
'y',
]
},
},
}
var data = {
...state, meta: {
...state.meta, data: {
...state.meta.data, hello: 'world'
}
}
}
console.log(data)
答案 1 :(得分:0)
Object.assign(state.meta.data,{hello:"world"});
console.log(state);
您正在克隆树的每个对象,这是不必要的或可以使用JSON完成:
var cloned=JSON.parse(JSON.stringify(state));
Object.assign(cloned,{hello:"world"});