¿Alguna idea de por qué mi asignación de variables está siendo mutada? Esto parece algo simple, pero no estoy seguro de lo que está pasando.
A continuación, se pasa un objeto de datos a la función pullChecklist como accesorio. Quiero tomar estos datos, crear una copia ( newPage ), cambiar las identificaciones en esa copia y luego guardar la copia en el estado.
Sin embargo, cada vez que intento cambiar las identificaciones en la copia newPage , las identificaciones también cambian en la page . Esto lo confirman los 3 registros de la consola.
Si elimino la declaración if por completo y solo dejo los registros de la consola Asignación original y Original Assignment Original Assignment 2 , los datos son exactamente como cuando se envían como apoyo. Agregar la instrucción if muta todos los registros de la consola a la versión con identificadores actualizados.
const pullChecklist = (page) => { console.log('Original Assignment', page.components[0].blocks) let newPage = page if (newPage.components[0].blocks) { newPage.components[0].blocks.map((block) => { if (block.type === 'checklist') { let newTest = uuidv4() block.id = newTest for (const c in block.data) { let newId = uuidv4() block.data[c].id = newId } console.log('Reformatted', block); } }); } console.log('Original Assignment 2', page.components[0].blocks); }; ¿Por qué se mutan los datos de la page ? ¡Gracias!
EDITAR:
Como lo señala @Vlaz a continuación, let newPage = page no copia el objeto.
Usé: obj = JSON.parse(JSON.stringify(o)); para copiar correctamente el objeto.