Aquí está el problema: estoy tratando de llamar a 2 funciones con un clic de botón. Ambas funciones actualizan el estado (estoy usando el enlace useState). La primera función actualiza el valor1 correctamente a 'nuevo 1', pero después de 1s (setTimeout) se dispara la segunda función, y cambia el valor 2 a 'nuevo 2' ¡PERO! Establece el valor1 de nuevo a '1'. ¿Por qué está pasando esto? ¡Gracias por adelantado!
import React, { useState } from "react";
const Test = () => {
const [state, setState] = useState({
value1: "1",
value2: "2"
});
const changeValue1 = () => {
setState({ ...state, value1: "new 1" });
};
const changeValue2 = () => {
setState({ ...state, value2: "new 2" });
};
return (
<>
<button
onClick={() => {
changeValue1();
setTimeout(changeValue2, 1000);
}}
>
CHANGE BOTH
</button>
<h1>{state.value1}</h1>
<h1>{state.value2}</h1>
</>
);
};
export default Test;
useState
usar o en su lugar useReducer
.
const [state, ...]
, y luego haciendo referencia a él en el setter ... Utilizará el mismo estado todo el tiempo.
useState
llamadas separadas , una para cada "variable".
changeValue2
?