Estoy usando un gancho useEffect para activar una actualización de setState. Obtengo un comportamiento extraño e inconsistente del parámetro anterior :
useEffect(() => { setCurrentPicturesObject((existing) => { const clone = {...existing} console.log({ existing, existingdotNocolor: existing.nocolor, selectedColorState, selectedColorArray: existing["nocolor"], clone }); return existing }); }, [selectedColorState]);Entonces, esperaría que el clon del objeto devuelva un objeto con las mismas claves y valores, ¿verdad? Aqui no:
De alguna manera, existing pasa de ser un objeto con un accesorio sin nocolor con una matriz de dos cadenas, a cambiar a una matriz con una cadena. De manera similar, cuando intento acceder al accesorio nocolor , solo devuelve una matriz con una cadena.
no puedo entender cambios existing tan pronto como intento acceder a ellos con algo más que simplemente registrarlos directamente en la consola?
No estoy completamente seguro de los detalles, pero esencialmente parece que la consola está registrando una vista en vivo del objeto, que es una cadena estática. Más info en esta respuesta .