Reputation: 23
So my question is how to change petNames object inside user Object without mutating it.
const user = {
name: 'Harry',
age: 50,
petNames: {
dog: 'Lisie',
cat: 'Foxer'
}
};
First level we can change like
{...user, age: 48 }
It will return
{
name: 'Harry',
age: 48,
petNames: {
dog: 'Lisie',
cat: 'Foxer'
}
};
But how can i change petNames ?
For example dog name change to 'Rex'.
And get object like
{
name: 'Harry',
age: 50,
petNames: {
dog: 'Rex',
cat: 'Foxer'
}
};
Thank you!
Upvotes: 1
Views: 429
Reputation: 193258
You can spread the inner properties as well:
const user = {
name: 'Harry',
age: 50,
petNames: {
dog: 'Lisie',
cat: 'Foxer'
}
};
const newUser = {
...user,
petNames: {
...user.petNames,
dog: 'rex'
}
};
console.log(user.petNames === newUser.petNames); // false
Upvotes: 4