FEConf Korea
의 영상을 보면서 기록하는, React
컴포넌트, 다시 생각하기!!
MVP
(Minimum Viable Product)를 열심히 만들고 있는 요즘,
컴포넌트 재사용에 대해 개발팀장님과 이야기 하다가 추천해주신 영상.
접속해보니 지난 날의 나도 봤긴 봤었는데.. 기억이 가물가물해서.. 이번 기회에 기록하며 다시 보기로 했다..
컴포넌트를 만드는 데에 필요한 것들과 유지보수를 방해하는 요소 살펴보기
🤔 Q1. 맛있는 케이크 만들기?!
케이크를 만드려면 밀가루, 설탕, 계란이 필요하다?!
= 케이크는 밀가루, 설탕, 계란에 의존한다.
= 케이크의 의존성: 밀가루, 설탕, 계란
React component를 만드려면 무엇이 필요할까?
💡 React component의 기능적 분류
React component는 필요한 것들을
props
와hooks
를 통해 받는다.
React component에
props
, hooks
로 넘기거나 import
를 통해 가져오는 의존성에는 어떤 특징들이 있을까?
CSS 등의 파일을 외부에 작성해서 컴포넌트 내부에 import
해오는 경우
스타일은 컴포넌트에 필요한 의존성이다.
컴포넌트에서 사용되는 커스텀 로직으로
전역 상태는
리모트 데이터 스키마는
api
서버에서 내려주는 데이터를 의미api
서버에서 내려주는 json
데이터의 내용, 모양🤔 Q2. 케이크에 딸기를 추가하면,
케이크에 딸기를 추가하려면 생크림도 필요하다?!
= 딸기 케이크는 생크림에 추가적으로 의존한다
= 딸기 케이크의 숨은 의존성: 생크림
새로운 정보를 추가하기 위해서는
props
를 새로 정의할텐데새로운 정보를 수정하기 위해서는
props drilling
을 피하기 위해서 데이터 저장소를 따로 두더라도이런 의존성들을 어떻게 정리할지 고민해보자
어떤 부분을 수정해야 할 때,
전역 상태는 다른 컴포넌트들과 함께 사용되니 스타일과 로직을 컴포넌트 안에 내재해보자
api
서버로 부터 리모트 데이터 스키마가 내려오는 모습을 살펴보면
루트 컴포넌트
와 다른 컴포넌트
들을 타고 내 컴포넌트
까지 오게 된다만약, props
를 통해 데이터 스키마를 받게 된다면
props
를 통해 ID
를 받고ID
를 통해 해당 데이터를 받아올 수 있게 해서 의존성을 끊어낼 수 있다ID
기반으로 정리하기nomalization
📌 참고! 데이터 정규화(
nomalization
)를 도와주는 라이브러리yarn add nomalizer
데이터 정규화(nomalization
)로
Global ID
(전역 ID)전역 ID
는
ID
만 가지고 특정 데이터를 유일하게 식별할 수 있도록 하는 체계다Global Object Identification
, 전역 객체 식별)전역 ID
를 통해 api
서버에 요청하면 해당 객체를 가져올 수 있는데, 이러한 api를 서버측에 제공하게 되면
props naming
직관적으로 분리된 것 같지만,
한 컴포넌트에서 여러 모델의 정보를 표현하는 것은 관심사 분리가 제대로 되지 않은 것!
관심사로 분리해보면 user
와 image
로 분리 되겠지만
이렇게 되면 상위 컴포넌트가 해당 모양을 정확하게 맞춰야 하기 때문에
상위 컴포넌트와의 의존성이 생길 것이다
ID
를 통해 필요한 객체의 레퍼런스만 받아오게 되면컴포넌트를 재사용하는 이유를
리모트 데이터 스키마 변화에 대응하기 위해서 살펴보자.
두 컴포넌트는 비슷하게 생겼지만
한 쪽의 변화에 살펴보아야 할 곳이 많다.
함께 변해야 하는 것들과 따로 변해야 하는 것을 구분하자!
각자의 컴포넌트는 미래의 각자의 방향대로 변화하겠지만,
우리의 제품은 끊임없이 변화하더라도 유저에게 일관된 경험을 제공해야 한다
정리하면, 컴포넌트를 분리해야 할지 재사용할지 고민된다면 떠올려보자!
관점이 기술보다 중요하다!!!
잊지 말자!!!