3주차 스프린트 계획 · boostcampwm-2022/web21-devrank Wiki
<aside> ❓ 메인페이지에 어떤 새로운 정보가 들어가면 좋을 것 같나요?
</aside>
국제화 적용
국제화 적용 완료 언어 변경시 url에 /en/, /ko/ 가 pathname앞에 붙게 된다.
SSG or SSR or CSR
getStaticProps
즉, SSG를 사용해서 빌드타임에 페이지를 생성하여 제공하는 방법을 채택했다.getServerSideProps
즉, SSR로 각 요청마다 최신화된 데이터를 fetch해서 문서를 생성하고 제공하는 SSR을 채택했다.재사용 가능한 컴포넌트에 대한 고민
컴포넌트를 만들때 여러 경우에 커스텀해서 사용할 수 있고 재사용 가능하면서
개발자가 사용하기 쉽고 직관적인 구조를 가지면서
UI와 기능적으로 확장가능한 컴포넌트를 만들자.
Dropdown 컴포넌트에 compound component 패턴 적용
UI 적인 부분을 커스텀하게 사용자가 만들 수 있게함
컴파운드 컴포넌트 패턴이 그럼 뭐야?
// Bad
return (
<Counter
label="label"
max={10}
iconDecrement="minus"
iconIncrement="plus"
onChange={handleChangeCounter}
/>
);
// 가독성이 좋고 props로 가장 적합한 컴포넌트에 직관적으로 전달해줄 수 있다.
return (
<Counter onChange={handleChangeCounter}>
<Counter.Decrement icon={"minus"} />
<Counter.Label>Counter</Counter.Label>
<Counter.Count max={10} />
<Counter.Increment icon={"plus"} />
</Counter>
);
그럼 우린 어떻게?
<Dropdown
trigger={<div>드롭다운</div>}
>
<Dropdown.ItemList>
<Dropdown.Item>한국어</Dropdown.Item>
<Dropdown.Item>English</Dropdown.Item>
</Dropdown.ItemList>
</Dropdown>