Estaba practicando con los nuevos documentos de reacción.
aquí: https://beta.reactjs.org/learn/updating-objects-in-state#challenges
Desafío 2 de 3: encuentra y corrige la mutación
Lo resolví, pero al intentar registrar el objeto initialPosition para ver su valor, el fondo no seguía el cuadro. eso significa que, de alguna manera, agregar el registro de la consola resolvió la mutación de estado.
Me pregunto cómo sucedió eso y si es un error o no.
import { useState } from 'react';
import Background from './Background.js';
import Box from './Box.js';
const initialPosition = {
x: 0,
y: 0
};
export default function Canvas() {
const [shape, setShape] = useState({
color: 'orange',
position: initialPosition
});
function handleMove(dx, dy) {
shape.position.x += dx;
shape.position.y += dy;
console.log({initialPosition}); //<====== HERE =====================================
}
function handleColorChange(e) {
setShape({
...shape,
color: e.target.value
});
}
return (
<>
<select
value={shape.color}
onChange={handleColorChange}
>
<option value="orange">orange</option>
<option value="lightpink">lightpink</option>
<option value="aliceblue">aliceblue</option>
</select>
<Background
position={initialPosition}
/>
<Box
color={shape.color}
position={shape.position}
onMove={handleMove}
>
Drag me!
</Box>
</>
);
}