FEConf
영상을 보고 정리한 글입니다.
케이크로 빗대서 생각하기
케이크를 만들려면 밀가루, 설탕, 계란이 필요
=> 케이크는 밀가루, 섩캉, 계란에 의존한다
= 케이크의 의존성: 밀가루, 설탕, 계란
리액트의 컴포넌트의 의존성? === 컴포넌트를 만들려면 뭐가 필요할까
컴포넌트의 의존성은 기능적(Type), 특징적(Feature) 을 기준으로 분류 할수 있다
기능적 분류
props, hooks, import
특징적 분류
리액트 컴포너트에 새로운 정보를 추가해보면?
-> 다른 수정을 해야한다!
=>정보를 받기위해 리액트 컴포넌트의 숨은 의존성: 다른 수정!
아래의 예시로 봐보자!
<PageArticleList> // 아티클 리스트 페이지
<ArticleList> // 아티클 리스트
<Article /> // 아티클 컴포넌트
</ArticleList>
</PageArticleList>
Article컴포넌트를 수정하기 위해선 루트 컴포넌트와 중간 컴포넌트를 수정하게 되는데 이를 리모트 데이터 스키마가 가지는 숨은 의존성!

새로운 정보를 수정하기에 루트 컴포넌트 중간 컴포넌트 까지 수정하게 하는데 -> props drilling -> 피하기 위해서 데이터 저장소를 따로 두더라도 페이지 기반 라우팅을 한다면 결국 루트 컴포넌트에 의존!
페이지 기반 라우딩을 한되면 루트 컴포넌트에 의존할수 밖에 없다


위에 그림처럼 props를 통해 데이터 스키마를 받게 된다면 루트컴포넌트에 강한 의존성이 생기는데 ->
- props를 통해 ID받고
- 데이터 저장소에서 ID를 통해 해당 데이터를 받아올 수 있게 해서 의존성을 끊어낼 수 있다
📌 참고! 데이터 정규화(nomalization)를 도와주는 라이브러리
yarn add nomalizer

한컴포넌트에서 여러모델의 정보를 표현하는 것은 관심사 분리가 제대로 되지 않은것
사진처럼 되면 상위 컴포넌트가 해당 모양을 정확하게 맞춰야 하기 때문에
상위 컴포넌트와의 의존성이 생길 것이다 => 재사용성 떨어짐
컴포넌트를 재사용하는 이유를
개발할 때 편함보다 유지보수할 때 편함으로 바라보자
변경될 만한 부분을 미리 예측하고 준비하기!!! => 대부분은 리모트 데이터 스키마가 변화하는 방향을 따라 움직인다.

두 컴포넌트닌 비슷하게 생겻지만 의존하고 있는 리모트 데이터 스키마는 user와 page로 각가 다르다
이때 기존에 있던 컴포넌트를 재사용할지? 복사해서 새컴포넌트로 분리 할지 고민하게 되는데...
같은 모델을 의존하는 컴포넌트: 재사용
다른 모델을 의존하는 컴포넌트 : 분리
기준으로 나누자!
해당 영상의 결론은!
