진행 일정 : 2/14, 2/21, 2/28 11:00 am
왜 리액트를 사용하는가? (왜 리액트를 선택했나)
어떻게 사용하는 것이 좋을까요?
const buttons = ['facebook', 'twitter', 'youtube'];
return (
<div>
{
buttons.map( (button) => {
return (
<IconButton
onClick={doStuff( button )}
iconClass={button}
/>
);
} )
}
</div>
);
as-is
const [showToast, setToast] = useState<boolean>(false);
const [toastMessage, setMessage] = useState<string>('');
to-be
const [toast, setToast] = useState({
open: false,
message: '',
onClose: () => setToast((prev) => ({ ...prev, open: false, message: '' })),
});
폴더 및 파일명은 일관되고 예측이 가능해야 합니다. 폴더 구조 패턴에 따라서 유사한 컴포넌트를 배치해야 합니다. 기본적으로 새 컴포넌트를 생성할 때마다 잘 정의된 패턴을 기반으로 컴포넌트를 생성할 위치를 알아야 합니다.
관련 파일(컴포넌트, 테스트 코드, 스타일, 타입)은 모두 하나의 폴더에 보관해야 합니다.
예를 들어 Story.tsx(스토리북을 사용하는 경우)와 같은 다른 파일을 추가하려는 경우에는 동일한 폴더에 추가
Button, Form, List와 같이 기본적인 UI에서 사용되는 컴포넌트 들은 별도의 폴더에 보관해야 합니다. (core)
분리된 작업을 쉽게 할 수 있고 일부 개발자는 이 폴더에만 집중을할 수 있습니다. 재사용, 공유 및 디버그가 용이합니다.
as-is
const Template =
media === MEDIA_NAME.SKT
? PageTemplate
: media === MEDIA_NAME.KT
? PageTemplateKt
: media === MEDIA_NAME.LGU
? PageTemplateLgu
: PageTemplate;
to-be
const {media} = useParam();
const components = {
skt: PageTemplate,
kt: PageTemplateKt,
lgu: PageTemplateLgu
};
const Template = components[media];
return <Template />;