Ecco il problema: sto cercando di chiamare 2 funzioni con un clic sul pulsante. Entrambe le funzioni aggiornano lo stato (sto usando l'hook useState). La prima funzione aggiorna il valore 1 correttamente a "nuovo 1", ma dopo 1s (setTimeout) viene attivata la seconda funzione e cambia il valore 2 in "nuovo 2" MA! Riporta il valore1 su '1'. Perché sta succedendo? Grazie in anticipo!
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
o invece di utilizzarlo useReducer
.
const [state, ...]
, e quindi riferendosi ad esso nel setter ... Userà sempre lo stesso stato.
useState
chiamate separate , una per ogni "variabile".
changeValue2
?