[React.js] 11. 합성 vs 상속

2021. 8. 10. 01:27개발/React.js

반응형

합성 (Composition)

상속 (Inheritance)

 

React에서는 상속 대신 합성을 사용하여 컴포넌트 간에 코드를 재사용하는것을 권장한다.

 

 

컴포넌트에서 다른 컴포넌트를 담기

다른 튜토리얼에서도 이와 같이 잘 쓰고 있었지만, 다시 확인하는 차원에서 살펴보면 아래와 같다.

이렇게 하나의 컴포넌트 안에서 다른 컴포넌트를 가지고 표기하는 방식이다.

 

 

 

자습서에서 알려주는 예시는 아래와같다.

props.children 은 자식 엘리먼트의 내용을 그대로 출력할 수 있는 특수한 prop 이다.

아래의 예시에서는 h1태그와 p 태그에 해당된다.

function FancyBorder(props) {
  return (
    <div className={'FancyBorder FancyBorder-' + props.color}>
      {props.children}
    </div>
  );
}

function WelcomeDialog() {
  return (
    <FancyBorder color="blue">
      <h1 className="Dialog-title">
        Welcome
      </h1>
      <p className="Dialog-message">
        Thank you for visiting our spacecraft!
      </p>
    </FancyBorder>
  );
}

 

가끔 component 내부에서 다른 prop 값 출력이 필요할 수 있는데, 그런 경우 아래와 같이 사용할 수 있다.

function SplitPane(props) {
  return (
    <div className="SplitPane">
      <div className="SplitPane-left">
        {props.left}
      </div>
      <div className="SplitPane-right">
        {props.right}
      </div>
    </div>
  );
}

function App() {
  return (
    <SplitPane
      left={
        <Contacts />
      }
      right={
        <Chat />
      } />
  );
}

 

 

 

 

 

React 에서 상속은?

React를 만든 Facebook에서는 상속 계층 구조로 만들어야하는 이유를 찾지 못했고, Component 자체로 재사용 가능하기때문에 상속을 따로 권하지 않는다.

위 처럼 재사용이 필요한 Component 를 분리하고, 이를 import해서 사용하는 것이 편리하다고 한다.

만약 UI 가 아닌 기능을 재사용하고 싶다면, 별도의 javascript 모듈로 분리하여 import 한 후 사용하는 것이 좋다고 한다.

반응형

'개발 > React.js' 카테고리의 다른 글

[React.js] react app을 PWA로 만들기  (2) 2021.08.25
[React.js] state를 바꾸는 방법 (setState)  (0) 2021.08.11
[React.js] 10. state 끌어올리기  (0) 2021.08.06
[React.js] 9. 폼  (0) 2021.08.03
[React.js] 8. List 와 Key  (0) 2021.08.02