728x90
300x250
React에서는 상태 값을 직접 수정하지 않고, 항상 "함수"를 통해 새로운 값을 계산하도록 권장한다. 함수형 업데이트는 이런 철학을 따른다.
1. 상태를 기존 값 기반으로 안전하게 계산하기 위해
2. React의 비동기적 상태 업데이트 특성을 안정적으로 처리하기 위해
함수형 업데이트 사용 예시
const [count, setCount] = useState(0);
// 함수형 업데이트 사용
setCount((prevCount) => prevCount + 1);
함수형 업데이트를 사용하는 이유
보통 React의 상태 업데이트는 아래와 같이 단순한 값을 넘겨주는데
setCount(count + 1);
이때, count는 현재 컴포넌트 렌더링에서 고정된 값이다.
하지만 React의 상태는 비동기적으로 작동하기 때문에 상태가 즉시 업데이트되지 않는다.
예를 들어
setCount(count + 1);
setCount(count + 1);
위의 코드는 count를 2번 증가 시켜야 하지만 예상된 결과가 나오지 않을 수 있다.
왜냐하면, setCount를 호출할 때 React는 아직 첫 번째 업데이트를 처리 중 이기 때문에 두 번째 setCount가 기존 값(count)에만 의존하게 된다.
const handleClick = () => {
setCount(count + 1); // 현재 count = 0
setCount(count + 1); // 여전히 count = 0 (React는 아직 첫 번째 업데이트를 처리 중)
};
작동방식
- React는 상태 업데이트 요청을 처리하기 위해 업데이트를 큐(queue)에 쌓는다.
- 상태가 즉시 변경되는 게 아니라, 렌더링이 끝날 때 업데이트를 일괄처리한다.
- 따라서, 두 번째 setCount(count + 1)를 호출할 때도 여전히 count는 첫 번째 업데이트 전의 값(0)으로 계산된다.
- 결과적으로 count가 두번 호출되었지만 위 결과는 1이 된다.
이런 문제를 해결하기 위해 React에서 "함수형 업데이트" 방식을 제공한다.
setCount((count) => count + 1);
위와 같이 함수형 업데이트 방식을 사용하면 React가 count에 최신 상태 값을 자동으로 넣어준다.
따라서 상태 업데이트가 안전하게 처리된다.
함수형 업데이트로 안전한 처리 예시
const handleClick = () => {
setCount((prevCount) => prevCount + 1); // 첫 번째 업데이트: prevCount = 0 → 1
setCount((prevCount) => prevCount + 1); // 두 번째 업데이트: prevCount = 1 → 2
};
함수형 업데이트 방식을 사용하면 React는 prevCount에 최신 상태 값을 자동으로 전달한다.
작동방식
- React는 상태 업데이트 함수에 현재 상태 값을 제공한다. (count) => count + 1에서 count는 항상 가장 최신 상태 값이다.
- React는 첫 번째 업데이트를 처리한 뒤, 다음 업데이트 함수 호출 시 갱신된 값을 넣어준다.
정리
- 문제 상황 : setCount(count + 1)는 count값이 고정되어 비동기 처리 시 원하는 겨로가를 얻지 못할 수 있다.
- 해결 방법 : setCount((count) => count + 1)는 React가 최신 상태 값을 함수의 매개변수로 제공하므로 안전하다.
- 이유 : 함수형 업데이트는 React의 비동기 상태 처리 방식에 맞춰 설계된 기능으로 안정적이고 안전한 상태 업데이트를 보장하기 위한 매커니즘이다.
- 쉽게 말해, 함수형 업데이트는 React에서 안전한 상태 업데이트를 위한 도구이다.
728x90
반응형
'Front-end > React' 카테고리의 다른 글
훅을 사용한 컴포넌트 - 비공개 (0) | 2024.12.12 |
---|---|
훅 사이에 데이터 공유하기 (0) | 2024.12.11 |
커스텀 훅 만들기 (0) | 2024.12.10 |
리액트 : 훅의 규칙 (1) | 2024.12.09 |
useRef와 callback Ref 비교하기 (0) | 2024.12.08 |
댓글