문제가 있습니다 : 버튼 클릭으로 2 개의 함수를 호출하려고합니다. 두 함수 모두 상태를 업데이트합니다 (useState 후크를 사용하고 있습니다). 첫 번째 함수는 value1을 'new 1'로 올바르게 업데이트하지만 1s (setTimeout) 후에 두 번째 함수가 실행되고 값 2가 'new 2'로 변경되지만 BUT! value1을 다시 '1'로 설정했습니다. 왜 이런 일이 발생합니까? 미리 감사드립니다!
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
하거나 대신 사용하는 것이 좋습니다 useReducer
.
const [state, ...]
그런 다음 setter에서이를 참조합니다. 항상 동일한 상태를 사용합니다.
useState
"가변"마다 하나씩 2 개의 개별 호출을 사용하십시오 .
changeValue2
있습니까?