-
Notifications
You must be signed in to change notification settings - Fork 27
컴포넌트 작성법
Sungdong Jo edited this page Nov 18, 2019
·
5 revisions
- Atomic(atoms, molecules, organisms, templates, pages)으로 분류
import React from 'react';
import * as S from './style';
// key뒤에 '?' 가 없다면 isRequired prop이다. (반대로 있다면 not isRequired)
// 설명이 필요한 props에는 위에 주석을 작성한다 /** 설명 */ => storybook에 표시됨
interface Props {
/** Hi there */
content: string;
/** This is sample description */
onClick?: object;
/** haha */
disabled?: boolean;
/** have a good day :) */
style?: object;
}
function Btn({
/* required props*/
content,
/* default props*/
disabled = false,
style = {},
}: Props): React.ReactElement {
return <S.Btn>{content}</S.Btn>;
}
export default Btn;
- Props interface를 작성한다.
- required / default props를 나누어 작성한다.
// example
import styled from 'styled-components';
import { palette } from 'styled-tools';
export const InnerContainer = styled.div`
height: 10rem;
display: flex;
flex-direction: column;
justify-content: space-around;
`;
interface IImgDivProps {
imgSrc: string;
}
export const ImgDiv = styled.div<IImgDivProps>`
width: 100%;
height: 8.12rem;
background: url(${p => p.imgSrc}) center center / cover;
`;
- 파일명은 index.stories.tsx이다.
- 위치는 컴포넌트와 sibling이다.
import React from 'react';
import { text } from '@storybook/addon-knobs';
import Btn from '.';
export default {
title: 'Atoms / Btn',
};
export const index: React.FC = () => (
<Btn content={text('contentText', 'awesome')} />
);
실용적인 리액트 테스트 전략
DevOps
Infra Structure
컴포넌트 작성법
Client Sturcture
데이터베이스 스키마
Yarn workspace 명령어
Docker를 이용한 서버 개발 환경
Linting Tools