İşte sorun: Bir düğme tıklamasıyla 2 işlevi çağırmaya çalışıyorum. Her iki fonksiyon da durumu günceller (useState kancasını kullanıyorum). İlk işlev, değer1'i 'yeni 1' olarak doğru şekilde günceller, ancak 1 saniye sonra (setTimeout) ikinci işlev patlar ve değer 2'yi 'yeni 2' olarak değiştirir AMA! Değer1'i tekrar '1'e ayarlar. Bu neden oluyor? Şimdiden teşekkürler!
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
veya bunun yerine kullanmanızı şiddetle tavsiye ederim useReducer
.
const [state, ...]
ve ayarlayıcıda ona atıfta bulunarak ... Her zaman aynı durumu kullanacaktır.
useState
her biri "değişken" için bir tane olmak üzere 2 ayrı çağrı kullanın .
changeValue2
?