배칭 업데이트

여러 state 업데이트를 하나의 리렌더링으로 묶어 처리하는 리액트의 최적화 기법입니다.

핵심 개념

예시

function handleClick() {
    setCount(c => c + 1); // 첫 번째 업데이트
    setFlag(f => !f);     // 두 번째 업데이트
    setName('리액트');     // 세 번째 업데이트
    // 세 가지 상태 변경이 배칭되어 한 번만 렌더링됩니다
}

React 17과 React 18의 차이

// React 17: 이벤트 핸들러 내부만 배칭
function handleClick() {
    setCount(c => c + 1); // 배칭 적용
    setFlag(f => !f);     // 배칭 적용 (렌더링 1회)
}

setTimeout(() => {
    setCount(c => c + 1); // 배칭 미적용
    setFlag(f => !f);     // 배칭 미적용 (렌더링 2회)
}, 1000);

React 18의 자동 배칭은 다음 영역까지 확장됩니다.

주의사항

핵심 정리

배칭 업데이트는 여러 상태 변경을 하나의 렌더링으로 그룹화해 불필요한 리렌더링을 줄이는 기법이며, React 18부터는 비동기 코드에서도 자동으로 적용됩니다.

→ 리액트의 Batching Update에 대해서 설명해주세요

CSLOG에서 보기