FE Conf 2021 컴포넌트, 다시 생각하기 세션을 듣고 정리한 내용입니다.
원본 영상 🎬 https://www.youtube.com/watch?v=HYgKBvLr49c
컴포넌트에 무엇을 작성하고, 어떻게 분리해야할까?
컴포넌트를 구성하는 것은?
유지보수를 방해하는 것은?
리액트 컴포넌트는 props, hooks, import로 의존성을 획득한다. 컴포넌트의 의존성의 타입은 크게 네가지로 분류할 수 있다.
1. CSS등 컴포넌트의 스타일
2. UI 조작에 필요한 커스텀 로직
3. 유저 액션을 통해 초래된 전역상태. 예를 들어 팝업의 열고닫기의 상태다.
4. Remote Data Schema. API 서버에서 내려주는 데이터의 모양이다.
page기반 라우터를 한다면 루트 컴포넌트에 대한 의존성을 가지게 된다. 컴포넌트에 새로운 정보를 추가할 경우 Props를 비롯해 하위 컴포넌트의 hooks, useEffect등을 수정해야한다.
그렇다면 컴포넌트간 의존성을 줄이기 위해서는 어떻게 할 수 있을까?
$ yarn add normalizr
image model을 정확히 알아야함
interface Props{
user:{
name:string
nickname:string
totalFollowerCount:number
lastActivityAt:Date
image:{
thumbnailUrl:string
}
}
}
지금까지 컴포넌트는 컴포넌트 자체의 모양에 따라 재사용하는 경우가 많았다. 그래서 모양이 달라질 때 props를 추가해 변화를 관리해왔는데, props가 너무 많아지거나, 같이 사용해도 될까라는 의문이 들 때가 있었다. 컴포넌트를 모델 기준으로 분리하면 그 고민들의 많은 부분을 해결할 수 있을 것 같다.! 컴포넌트에 대한 새로운 인사이트를 얻었다.
데이터 정규화는 잘 모르는 부분이라 추가적으로 공부를 해봐야겠다.