Tengo este extraño problema de que cuando configuro un nuevo estado usando el operador de propagación, solo se reescribe una clave de objeto.
useEffect(() => { props.setCanvas([...props.canvas, { block: 1, innerBlock: !props.canvas.length ? 1 : (innerBlockChange(props.drop.blockType, props.canvas[props.canvas.length - 1].blockType) ? props.canvas[props.canvas.length - 1].innerBlock + 1 : props.canvas[props.canvas.length - 1].innerBlock), blockType: (props.drop.blockType == 'center') ? 'center' : 'double', class: 'placeholders', position: props.drop.blockType, size: 'regular', entity: props.drag.element, // this one get rewritten index: !props.canvas.length ? 1 : props.drop.main.querySelector('section.block:not(.mockup)').querySelectorAll('.placeholders').length + 1, indexOfType: props.canvas.filter(el => el.entity = props.drag.element).length + 1, connections: [], properties: [], comments: [], embed: false }]); },[props.drag]);La clave de entidad no conserva el valor almacenado y cambia cuando setState se ejecuta nuevamente.
Por ejemplo, si para el primer elemento se establece en A, cuando setState se ejecuta por segunda vez con el nuevo valor de entidad de B, el primer elemento de los estados del lienzo también cambia a B.
Traté de usar un estado completamente separado (no props.drag) pero el problema aún existe.