버튼을 클릭하여 이전 state 값을 2로 업데이트 하는 방법
- 올바른 방법
- 정상적으로 2씩 state가 증가됨.
function App() {
const [state, setState] = useState(0);
const onClick = () => {
useState((prev) => prev + 1);
useState((prev) => prev + 1);
};
<h1>{state}</h1>
<button onClick={onClick}>Count Up</button>
}
- 올바르지 않은 방법
- 1씩 증가됨.
function App() {
const [state, setState] = useState(0);
const onClick = () => {
useState(state + 1);
useState(state + 1);
};
<h1>{state}</h1>
<button onClick={onClick}>Count Up</button>
}
왜 1씩 증가되는가?
React에서는 보다 나은 성능을 위하여 상태 업데이트는 비동기로 동작하기 때문에 setState()의 여러 호출이 한 번만 실행될 수 있다.
https://reactjs.org/docs/state-and-lifecycle.html#state-updates-may-be-asynchronous
따라서 setState()를 이용하여 값을 초기화하는 것이 아닌 이전 값을 기반으로 값을 변경하는 경우 첫 번째 인수를 함수로 받고 그 함수의 첫 번째 인수를 통해 값을 변경한다.
https://reactjs.org/docs/hooks-reference.html#functional-updates
반응형
'React' 카테고리의 다른 글
[React][Next.js] <Link></Link>를 통한 라우터 기능 - <Link> 내부에 <a> 태그를 넣는 이유 (0) | 2022.06.30 |
---|---|
[react-router-dom][v6] URL 파라미터를 통해 하위 경로로 이동하기 (0) | 2022.06.18 |
React 시작(실행)하기 - Windows(윈도우) 기준 (0) | 2020.11.19 |