<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>rolled-potatoes.log</title>
        <link>https://velog.io/</link>
        <description>슈퍼(마켓) 개발자</description>
        <lastBuildDate>Fri, 24 Dec 2021 11:58:03 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>rolled-potatoes.log</title>
            <url>https://images.velog.io/images/rolled-potatoes/profile/7b698242-9f77-4041-bde6-710eff76bb2c/social.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. rolled-potatoes.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/rolled-potatoes" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[React 컴포넌트]]></title>
            <link>https://velog.io/@rolled-potatoes/React-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8</link>
            <guid>https://velog.io/@rolled-potatoes/React-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8</guid>
            <pubDate>Fri, 24 Dec 2021 11:58:03 GMT</pubDate>
            <description><![CDATA[<p>리액트는 화면을 구성하기 위해 하나 이상의 컴포넌트를 조합한다. </p>
<p>그래서 항상 컴포넌트를 어떻게 나누고 관리 해야하는지 고민이다. </p>
<h2 id="presentational-and-container-component">presentational and container component</h2>
<p>제가 생각하는 두 컴포넌트는</p>
<blockquote>
<p>presentational component 
부모로부터 받은 props를 특정 스타일, 마크업에 따라 렌더링만 하는 컴포넌트.</p>
</blockquote>
<blockquote>
<p>container component
상태, 비동기 통신, 이벤트 로직 등 전반적인 로직을 컨트롤 하는 컴포넌트.</p>
</blockquote>
<p>이다.</p>
<p>언제부터인가 정석으로 자리 잡은 컴포넌트 디자인 패턴이다.</p>
<p>당시에는 클래스형 컴포넌트만이 상태를 가질 수 있었기에 자연스럽게 생겨난 패턴인 것 같다. </p>
<p>이런 패턴의 장점으로는</p>
<ul>
<li>관리가 용이하다.<ul>
<li>뷰에 문제가 있으면 presentational component.</li>
<li>로직에 문제가 있으면 container component</li>
</ul>
</li>
<li>독립 작업이 가능하다.<ul>
<li>props를 건들이지 않는 이상 presentational component 내부를 아무리 바꿔도 로직과 독립적이다.</li>
<li>퍼블리셔는 prestiontational component, 개발자는 container component를 동시 개발.</li>
</ul>
</li>
<li>코드의 재사용<ul>
<li>prestiontational component는 props만 내려준다면 어디는 사용할 수 있다.</li>
</ul>
</li>
</ul>
<p>로 정리할 수 있겠다.</p>
<h2 id="hooks">Hooks</h2>
<p>하지만 현재는 Hook이 도입 되었고, 많은 개발자들이 클래스형 컴포넌트 보다는 훅을 사용한 펑션형 컴포넌트를 만들게 되었다. </p>
<p>그래서 지금 굳이 이런 패턴의 장점이 뚜렷하지 않아지며 고집할 필요는 없는 것 같다. </p>
<p>오히려 container component는 거의 종속된 로직을 가지고 있어 재사용과 거리가 멀어 진다. </p>
<p>로직을 커스텀 훅으로 분리하여 원하는 컴포넌트에 부착시키는 쪽이 더 효울적일 것 같다는 생각이 든다. </p>
<h2 id="그냥-둘다-사용하자">그냥 둘다 사용하자</h2>
<p>굳이 특정 패턴을 사용할 필요는 없다. 장점들만 가져와서 사용하면 그게 좋은 것이 아닌가?</p>
<p>컴포넌트에 훅을 사용있는 상황에서 컴포넌트의 마크업만 필요하면 훅을 분리하고 컨테이너를 만들면 된다.</p>
<p>처음부터 많은 것을 나누고 설계하는 것도 좋지만, 그런 정적인 개발보다는 상황에 따라 유동적으로 나눌 수있게 개발하는게 중요한 것 같다. </p>
<p>중간중간 코드가 괴물이 되지 않게 지속적인 리팩토링을 하는 것도 잊지 말자.</p>
]]></description>
        </item>
    </channel>
</rss>