프론트엔드/한 입 크기로 잘라먹는 리액트

React.js - 카운터 앱, State Lifting

icems0428 2025. 1. 30. 17:22

 이번 실습 시간에는 카운터 앱을 만들어보았다. App 컴포넌트와 그 아래에 자식 요소로, 현재 카운트를 표시하는 Viewer 컴포넌트, 증감 버튼을 담당하는 Controller 컴포넌트가 있다. 여기서 현재 카운트 값에 대한 state가 필요한데, 해당 state는 어떤 컴포넌트에서 생성해야 할까? 정답은 바로 App 컴포넌트이다. 이유는, Viewer 컴포넌트에서도 count 값이 필요하고, Controller 컴포넌트에서도 count 값과 setCount가 필요하기 때문이다. 그렇지만 리액트에서는, 컴포넌트 간에 데이터를 전달하기 위해서 props를 이용해야 하는데, 이는 부모에서 자식 방향으로만 이동할 수 있다. 그러므로 두 형제 컴포넌트가 같은 state을 공유하기 위해서는 부모 컴포넌트에 state를 생성해야 하는 것이다. 이를 State Lifting, 즉 state 끌어 올리기라고 표현한다.