LostStarz
174
2021-07-31 01:25:05
4
137

[react/redux] container, presenter 패턴 질문 드립니다.


 리액트와 리덕스를 공부하면서

container/presenter 패턴에 대해 알게되었습니다.

container는 redux의 store와 연결하여, 상태를 받아오고 업데이트 하는 컴포넌트,

presenter는 container에서 props로 내려준 것들을 단순히 랜더링하는 컴포넌트로 알고 있습니다.

질문은 아래와 같습니다.

useSelector와 useDispatch를 훅을 사용하여 하나의 컴포넌트에서 처리해도 될 것같은데

굳이 container와 presenter로 나눈 패턴을 사용하는 이유가 무엇인지 궁금합니다.

0
  • 답변 4

  • 메이플비
    396
    2021-07-31 02:27:28 작성 2021-07-31 02:28:31 수정됨

    뭐 개발방식이라는게 늘 그렇듯 best practice에 가까운것과 bad practice에 가까운것은 있어도 정답이란게 있기가 힘들지요. 

    처음 container 와 presenter방식이 도입되게 된 이유는 바로 separation of concerns을 기반으로 로직이 일어나는 부분과 랜더링이 일어나는 부분을 분리하고자 했습니다. 그래서 로직 수정이 필요하면 로직이 있는 부분을 수정하고, 화면을 수정하려고 하면 프리젠터를 수정하고 이런 방식으로 일을 했었지요.

    근데 이런 방법도 시간이 지나면서 또 다른 개발방식이 각광을 받게됐고 그 이면에 바로 언급하신 훅이 있습니다.

    하지만 뭐가 절대적으로 맞는것은 아닌지라 컨테이서 프리젠터 방식을 선호하시는 분도 있고, 글쓴분과 같은 방식을 선호하는 사람도 있습니다. 리덕스의 메인 개발자 마크 에릭슨은 두 방식을 섞어쓰지 않는게 좋다고 권장을 했지만, 섞어서 쓰는 사람들 또한 존재합니다.

    디자인 패턴이란건 어디까지나 가이드라인 같은것이고, 개발하려는 앱의 상황에 맞게 적절하게 사용하시면 됩니다. 특히나 unopinionated를 표방하는 리액트는 더더욱 그런부분에서 자유로운 편입니다.


  • charlatan
    4k
    2021-07-31 08:22:47
    후크가 나오기 전에 컨테이너-프리젠테이셔널 패턴이 사용되었기 때문이 아닐까요? 후크가 나온 이후에는 그렇게 복잡하게 하지 않아도 되니까 그런 패턴을 고수할 이유는 없다고 봅니다.
  • ISA
    5k
    2021-07-31 14:13:07
    클래스형 컴포넌트, 커스텀훅을 통한 분리 
  • LostStarz
    174
    2021-07-31 14:36:54
    답변 감사합니다!!!
  • 로그인을 하시면 답변을 등록할 수 있습니다.