Skip to content

Instantly share code, notes, and snippets.

@splincode
Created April 29, 2019 18:23
Show Gist options
  • Save splincode/acc02a2af0078a1700af3615e02572b8 to your computer and use it in GitHub Desktop.
Save splincode/acc02a2af0078a1700af3615e02572b8 to your computer and use it in GitHub Desktop.
/*
INCORRECT CHANGES (deep mutation)
*/
const animals = {
zebra: {
food: ['leaves', 'bark'],
name: 'zebra'
},
panda: {
food: [],
name: 'panda'
}
};
const copy = { ...animals };
copy.panda.food.push('leaves'); // bad
console.log(animals.panda.food); // ['leaves']
console.log(copy.panda.food); // ['leaves']
/*
CORRECT CHANGES (deep spread)
*/
const animals = {
zebra: {
food: ['leaves', 'bark'],
name: 'zebra'
},
panda: {
food: [],
name: 'panda'
}
};
const copy = {
...animals,
panda: {
...animals.panda,
food: [
...animals.panda.food,
'leaves'
]
}
};
console.log(animals.panda.food); // [ ]
console.log(copy.panda.food); // ['leaves']
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment