Lift State Up - React Coding Interview Question
- 두 개의 슬라이더가 하나의 공유된 퍼센티지 값을 제어하며, 한 슬라이더를 움직이면 다른 슬라이더와 진행 바가 동시에 업데이트되어야 하는 React 컴포넌트 구현 문제에 직면합니다. 🎯
- 초기 코드에서는 각 슬라이더가 자체적인
value 상태를 가지고 있어, 한 슬라이더를 조작해도 다른 슬라이더나 진행 바가 동기화되지 않는 문제가 발생했습니다. ↔️
- 해결 원칙으로 '상태 끌어올리기(Lift State Up)'를 적용합니다. 이는 여러 자식 컴포넌트가 공유하는 상태는 가장 가까운 공통 부모 컴포넌트에서 관리해야 한다는 React의 핵심 원칙입니다. ⬆️
- 구현 단계는 다음과 같습니다:
- 개별
Slider 컴포넌트에서 value 상태를 제거합니다. ✂️
- 공통 부모인
PercentageController 컴포넌트로 percentage 상태와 setPercentage 함수를 이동시킵니다. 📦
percentage 값과 setPercentage 함수를 Slider 컴포넌트와 PercentageBar 컴포넌트에 props로 전달합니다. ➡️
- 슬라이더 조작 시, props로 받은
setPercentage 함수를 호출하여 부모의 상태를 업데이트하고, 이는 모든 자식 컴포넌트의 동기화된 리렌더링을 유발합니다. 🔄
- 결과적으로, 상태를 성공적으로 끌어올려 두 슬라이더와 진행 바가 완벽하게 동기화되어 작동하며, 모든 테스트를 통과합니다. ✅
- 이 과정은 React의 단방향 데이터 흐름(Unidirectional Data Flow)과 효율적인 상태 관리의 중요성을 이해하고 적용하는 데 필수적인 개념을 학습하는 데 도움이 됩니다. 🌊