He reproducido el problema en los siguientes códigos y caja: https://codesandbox.io/s/unruffled-danilo-mbb0e?file=/src/App.js
Tengo una matriz de estado de objetos [{name:"Tom"},{name:"Dick"},{name:"Harry"}] . Quiero poder duplicar el objeto presente en un índice específico en la matriz. He proporcionado un botón "Duplicar" para hacerlo en la zona de pruebas.
Siga los siguientes pasos en la zona de pruebas para recrear el problema:
Quiero evitar esto. No quiero que los dos objetos Dick permanezcan unidos para siempre. ¿Cómo hago esto?
Estás copiando superficialmente la matriz. Necesitas una copia profunda. Reemplace let copy = cur.slice(); with let copy = cur.map(item => {return {...item}}); y su código debería funcionar. básicamente, necesitamos desestructurar el objeto interno para obtener una nueva copia de cada objeto en la matriz. Puede leer sobre esto aquí Inmutabilidad de objetos en JS