[10분 테코톡] 클레어의 컴포넌트, 유연하게 다시 생각해보기
- 제품 개발의 변화는 필연적이므로, 개발자는 변화에 빠르고 안전하게 대응하는 'Maker'가 되어야 합니다. 🔄
- React 컴포넌트는 props, hooks, 스타일, 커스텀 로직, 전역 상태, 데이터 등 다양한 요소에 의존성을 가집니다. 🔗
- 유연한 컴포넌트 설계를 위한 첫 번째 관점은 '의존성 전파 줄이기'로, 비슷한 관심사를 가까이 두는 Co-location을 통해 스타일과 로직을 컴포넌트 내부에 함께 배치하여 수정 범위를 좁힙니다. 🤝
- 데이터 의존성을 줄이기 위해, props로 직접 데이터를 받는 대신
id를 받아 컴포넌트 내부에서 데이터를 가져오도록 하여 루트 컴포넌트와의 강한 의존성을 완화할 수 있습니다. 💡
- 두 번째 관점은 '변하는 것과 변하지 않는 것 구분하기'로, 디자인에 종속되어 자주 변하는 UI와 상대적으로 고정적인 데이터/로직을 분리합니다. ✂️
- Headless 패턴을 활용하여 데이터 계산 로직을 커스텀 훅으로 위임하고, 컴포넌트는 순수하게 UI만 렌더링하도록 하여 UI와 로직의 관심사를 분리합니다. 🎭
- 세 번째 관점은 '함께 변하는 것과 별개로 변하는 것 분리하기'로, 같은 모델에 의존하는 컴포넌트는 재사용하고, 다른 모델에 의존하는 컴포넌트는 UI가 유사하더라도 모델 기준으로 분리하여 불필요한 변경 전파를 막습니다. 🧩
- 궁극적으로 모델 기반으로 컴포넌트를 분리하고 설계함으로써, 끊임없는 변화 속에서도 일관된 사용자 경험을 제공하고 변화에 유연하게 대응할 수 있는 구조를 만듭니다. 🏗️
- 변화는 피할 수 없지만, 설계 관점을 통해 대응 가능성을 높여 유연하고 확장 가능한 서비스를 구축할 수 있습니다. 🌱