관리 메뉴

프론트엔드 정복하기

React | <프레젠트 컴포..>와 <컨테이너 컴포..>로 분리하는 방법 본문

개발 방법론

React | <프레젠트 컴포..>와 <컨테이너 컴포..>로 분리하는 방법

GROWNFRESH 2021. 1. 28. 15:03

 

다음은 컴포넌트를 어떻게 분리해야하는지 알려주는 고전적인 문서다.

Presentational and Container Components 번역본

 

 

 

위 문서에 따르면 컴포넌트는 성격별로 2가지로 나눠볼 수 있다.

    프레젠테이션 컴포넌트         컨테이너 컴포넌트    
어떻게 보여지는가와 관련 어떻게 동작하는가와 관련
프레젠테이션 컴포넌트, 컨테이너 컴포넌트 모두 자식이 될 수 있다.
DOM 마크업이나 스타일 시트를 포함한다. DOM 마크업이나 스타일 시트가 없다.
액션, store 등에 의존적이지 않다. 액션을 호출한다.
데이터 가져오기, 변경 등에 관여하지 않는다. 상태가 자주 변경된다.
props를 통해 배타적으로 콜백함수나 데이터를 받는다.  

 

 

 

예를 들어 <저장> 버튼을 만든다고 하자. 버튼의 역할을 아래와 같이 presentational 속성, 컨테이너 속성별로 나눠볼 수 있다.

1. state에 따라 disabled를 변경한다. (container)

2. 클릭 이벤트를 처리한다. (container)

3. CSS 파일을 불러와 UI를 만든다. (present)

 

====>> UI를 담당하는 컴포넌트를 먼저 만든 후 =====>> 동작을 담당하는 컴포넌트를 만들어 본다.

 

 

여러가지 Functional 컴포넌트들을 어떻게 역할별로 컴포넌트를 분리해서 설계하는지 상세히 설명해 놓은 블로그가 있다.

jeonghwan-kim.github.io/dev/2020/01/28/component-design.html

 

컴포넌트의 역할 분리

리액트로 프론트엔드 일을 하면서 지난 1년간 가장 많이 사용한 관련 기술이 리덕스다. 최근 Mobx를 사용하면서 구조가 다소 바뀌긴 했지만 컴포넌트를 구성하는 방식은 여전히 리덕스를 사용했

jeonghwan-kim.github.io

 

'개발 방법론' 카테고리의 다른 글

React 컴포넌트 설계 방법  (0) 2021.01.28