본문 바로가기

Learn/React

CDD

CDD (Component Driven Development)

 

재사용 할 수 있는 UI 컴포넌트를 만들어 둔 다음 용도에 맞게 재사용 하는 것.

 

컴포넌트를 하나의 조각이라 생각하고 큰 틀에 맞춰 끼워나간다고 생각.

 

Styled Components

 

CSS in JS 라는 개념이 대두되면서 나온 라이브러리

CSS in JS 라이브러리를 사용하면 CSS도 쉽게 Javascript 안에 넣어줄 수 있으므로, HTML + JS + CSS까지 묶어서 하나의 JS파일 안에서 컴포넌트 단위로 개발

 

그 중 가장 인기 있는 것이 Styled Components

 

Styled Components 사용법

 

// 터미널에서 입력 후
npm install --save styled-components
// 사용할 파일로 불러오기
import styled from "styled-components"

 

Styled Components 문법

 

Styled Components는 Templete Literals 문법을 사용

 

컴포넌트 만들기

const BlueButton = styled.button `  // <- 백틱 사용
  background-color: blue;
  color: white;
`; // <- 마무리

 

컴포넌트를 재활용해서 새로운 컴포넌트 만들기

const BlueButton = styled.button`
  background-color: blue;
  color: white;
`;

//만들어진 컴포넌트를 재활용해 새로운 컴포넌트 만들기
const BigBlueButton = styled(BlueButton)`
  padding: 10px;
  margin-top: 10px;
`;

 

Props 활용하기

 

내려준 props 값에 따라서 컴포넌트를 렌더링하는 것도 가능

props를 받아오려면 props를 인자로 받는 함수를 만들어 사용

Props로 조건부 렌더링

 

삼항연산자 사용

const Button1 = styled.button`
  background: ${(props) => (props.skyblue ? "skyblue" : "white")};
`;

export default function App() {
  return (
    <>
      <Button1>Button1</Button1>
      <Button1 skyblue>Button1</Button1>
    </>
  );

props로 조건에 맞게 재사용

 

Props 값으로 렌더링하기

 

props의 값을 통째로 활용해서 컴포넌트 렌더링에 활용

const Button1 = styled.button`
  background: ${(props) => (props.color ? props.color : "white")};
`;
//아래와 같은 형식으로도 활용
const Button2 = styled.button`
  background: ${(props) => props.color || "white"};
`;

export default function App() {
  return (
    <>
      <GlobalStyle />
      <Button1>Button1</Button1>
      <Button1 color="orange">Button1</Button1>
      <Button1 color="tomato">Button1</Button1>
      <br />
      <Button2>Button2</Button2>
      <Button2 color="pink">Button2</Button2>
      <Button2 color="turquoise">Button2</Button2>
    </>
    );

 

전역 스타일 설정

 

전역에 설정하고 싶을 땐 createGlobalStyle함수를 불러와야 한다.

// 글로벌 함수 createGlobalStyle 불러오기
import { createGlobalStyle } from "styled-components";
// 글로벌 스타일 지정하기
const GlobalStyle = createGlobalStyle`
	button {
		padding : 5px;
    margin : 2px;
    border-radius : 5px;
	}
`
// 글로벌 스타일 사용하기 최상위 컴포넌트에서 사용

function App() {
	return (
		<>
			<GlobalStyle />
            	<Button></Button>
		</>

 

컴포넌트 UI 개발을 위한 Storybook

 

UI 개발 즉, Component Driven Development를 하기 위한 도구

각각의 컴포넌트들을 따로 볼 수 있게 구성해 주어 한 번에 하나의 컴포넌트에서 작업

재사용성을 확대하기 위해 컴포넌트를 문서화하고, 자동으로 컴포넌트를 시각화하여 시뮬레이션할 수 있는 다양한 테스트 상태를 확인

 

Component Driven Development 가 트렌드로 자리 잡게 되면서 이를 지원하는 도구 중 하나인 Component Explorer (컴포넌트 탐색기) 가 등장

Component Explorer에는 많은 UI 개발 도구가 다양하게 있는데 그중 하나가 Storybook

 

 

 

 

'Learn > React' 카테고리의 다른 글

Redux  (0) 2023.02.25
상태 관리  (0) 2023.02.23
React Effect Hook / Ajax  (3) 2023.02.03
React 데이터흐름 / state 끌어올리기  (0) 2023.02.02
React State / 이벤트  (0) 2023.01.28