presentational & container

로직을 수행하는 컴포넌트, UI를 보여주는 컴포넌트가 분리된 패턴이다.

앱의 기능과 ui에 대한 구분이 쉽다.

재활용 사용성도 크다.

presentational


// CommentListPresenter.js
import React from "react";

const Commentlist = comments => (
  <div>
    {comments.map(({ body, author }) => (
      <p>
        {body}-{author}
      </p>
    ))}
  </div>
);

container


// CommentListContainer.js
import React from "react";
import CommentList from "./CommentList";

const CommentListContainer = () => {
  constructor() {
    super();
    this.state = { comments: [] };
  }

  componentDidMount() {
    fetch("/my-comments.json")
      .then(res => res.json())
      .then(comments => this.setState({ comments }));
  }

  return <CommentList comments={this.state.comments} />;
}