■ Component 합성과 추출

- Component 합성

: 여러 개의 컴포넌트를 합쳐 하나의 컴포넌트를 만드는 것이다.

  리액트에서는 컴포넌트 안에 다른 컴포넌트를 사용할 수 있기 때문에

  복잡한 화면을 여러개의 컴포넌트로 나눠서 구현이 가능하다.

 

 

예제 코드)

# props의 값을 다르게해서 welcome 컴포넌트를 여러번 사용한다.

   이렇게 하면 앱이라는 컴포넌트는 welcome 컴포넌트 3개를 포함하고 있는 컴포넌트가 된다.

   여러개의 컴포넌트를 합쳐서 또 다른 컴포넌트를 만드는 것을 컴포넌트 합성이라 한다.


# 앱 컴포넌트 안에 3개의 웰컴 컴포넌트가 있고 각각의 웹컴 컴포넌트는

   각기 다른 props를 가지고 있다.

# 앱 컴포넌트를 루트로 해서 하위 컴포넌트들이 존재하는 형태가 리액트로만 구성된 앱의 기본적인 구조다.

# 기존에 있던 웹 페이지에 리액트를 연동한다면 루트 노드가 하나가 아닐 수 있기 때문에 위 구조와 다를 수 있다.


- Component 추출

: 컴포넌트 합성과 반대로 복잡한 컴포넌트를 쪼개서 여러개의 컴포넌트로 나눌 수 있다.

  이러한 과정을 컴포넌트 추출이라 한다.

  ※ 큰 컴포넌트에서 일부를 추출하여 새로운 컴포넌트를 만든다는 뜻!

 

컴포넌트 추출을 잘 활용하면 컴포넌트의 재 사용성이 올라가게 된다.

컴포넌트가 작아질수록 해당 컴포넌트의 기능과 목적이 명확해지고 프랍스도 단순해지기 때문에 재사용성이 높아진다.

 

 

예제 코드)

# 위 컴포넌트는 댓글을 표시하기 위한 컴포넌트로

   내부에 작성자의 프로필 이미지와 이름, 댓글 내용과 작성일을 포함하고 있다.

# 해당 컴포넌트의 props는 오른쪽과 같은 형태


 

# 해당 부분을 추출하여 아바타라는 별도 컴포넌트 생성

 

 

아바타 컴포넌트 예제)

# props에 기존에 사용하던 author 대신 좀더 보편적인 의미를 가지고 있는 user 사용

# 보편적인 단어를 사용하는 것은 재사용성 측면을 고려하는 것!

 

 

실제 comment 컴포넌트 반영 예제)

 


# 유저정보 추출하여 별도 컴포넌트 생성

 

 

유저 컴포넌트 예제)

# 사용자 정보를 담고 있는 부분을 UserInfo 컴포넌트로 추출

# 아바타 컴포넌트도 해당 컴포넌트에 함께 추출되었다.

 

 

comment 컴포넌트 반영 예제)

# 코드가 간결해진 것을 볼 수 있다.


# Comment 컴포넌트가 UserInfo 컴포넌트를 포함하고 있고 UserInfo 컴포넌트는 Avatar 컴포넌트를 포함하고 있다.

# 컴포넌트를 어느정도 수준까지 추출하는 것이 좋은지에 대해 정해진 별도의 기준은 없으며,

   기능 단위로 구분하는 것이 좋고 나중에 곧바로 재사용이 가능한 형태로 추출하는 것이 좋다.

'Web > React' 카테고리의 다른 글

React State와 Lifecycle 정의  (0) 2024.06.26
React 실습3 - 댓글 컴포넌트 만들기  (0) 2024.06.26
React Component 만들기 및 랜더링  (0) 2024.06.26
React Props의 특징 및 사용법  (0) 2024.06.26
React Components와 Props 정의  (0) 2024.06.26

+ Recent posts