Voici le problème: j'essaie d'appeler 2 fonctions en cliquant sur un bouton. Les deux fonctions mettent à jour l'état (j'utilise le hook useState). La première fonction met correctement à jour value1 en 'new 1', mais après 1s (setTimeout) la deuxième fonction se déclenche, et elle change la valeur 2 en 'new 2' MAIS! Il a remis la valeur1 à «1». Pourquoi cela arrive-t-il? Merci d'avance!
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
ou de l'utiliser à la place useReducer
.
const [state, ...]
, puis en y faisant référence dans le setter ... Il utilisera le même état tout le temps.
useState
appels distincts , un pour chaque "variable".
changeValue2
?