Hier ist das Problem: Ich versuche, 2 Funktionen auf Knopfdruck aufzurufen. Beide Funktionen aktualisieren den Status (ich verwende den useState-Hook). Die erste Funktion aktualisiert den Wert1 korrekt auf 'neue 1', aber nach 1s (setTimeout) wird die zweite Funktion ausgelöst und der Wert 2 in 'neue 2' geändert, ABER! Der Wert1 wird auf '1' zurückgesetzt. Warum passiert dies? Danke im Voraus!
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
oder stattdessen verwenden useReducer
.
const [state, ...]
, und dann im Setter darauf verweisen ... Es wird immer den gleichen Zustand verwenden.
useState
Aufrufe, einen für jede "Variable".
changeValue2
?