CDD

๊น€๋‚จ๊ฒฝยท2022๋…„ 12์›” 26์ผ

react

๋ชฉ๋ก ๋ณด๊ธฐ
13/37

์˜๋ฏธ

๐Ÿ’ก Component Driven Development์˜ ์•ฝ์ž
๐Ÿ’ก ๋ถ€ํ’ˆ ๋‹จ์œ„๋กœ UI๋ฅผ ๋งŒ๋“ค์–ด๋‚˜๊ฐ€๋Š” ๊ฐœ๋ฐœ ์ง„ํ–‰ ๊ฐ€๋Šฅ
๐Ÿ’ก ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ

CSS์˜ ๊ตฌ์กฐํ™”

๐Ÿ“— CSS
์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์˜ ์ฆ๊ฐ€, ํ”„๋กœ์ ํŠธ ๋ณต์žก์„ฑ์˜ ์‹ฌํ™”, ๋‹ค์–‘ํ•œ ๋””๋ฐ”์ด์Šค์˜ ๋“ฑ์žฅ์œผ๋กœ
CSS์˜ ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ํ•˜๊ธฐ์œ„ํ•œ ๊ตฌ์กฐํ™”๋œ CSS ํ•„์š”์„ฑ ๋Œ€๋‘

๐Ÿ“— CSS ์ „์ฒ˜๋ฆฌ๊ธฐ
CSS์˜ ๋‹จ์ ์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋…(๋ณ€์ˆ˜, ํ•จ์ˆ˜, ์ƒ์† ๋“ฑ)์„ ํ™œ์šฉํ•˜์—ฌ ํ•ด๊ฒฐ
์„œ๋ฒ„์— ์ธ์‹ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด Compiler๋ฅผ ์‚ฌ์šฉ, ์šฉ๋Ÿ‰์ด ๋งค์šฐ ์ฆ๊ฐ€ํ•˜๋Š” ๋‹จ์ 

๐Ÿ“— CSS ๋ฐฉ๋ฒ•๋ก 
-์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ
-์‰ฌ์šด ์œ ์ง€๋ณด์ˆ˜
-ํ™•์žฅ ๊ฐ€๋Šฅ
-ํด๋ž˜์Šค๋ช…์œผ๋กœ ์˜๋ฏธ ์˜ˆ์ธก ๊ฐ€๋Šฅ

//block__element--modifier
.header__navi--text{
	color: red;
}

//block : ์ „์ฒด๋ฅผ ๊ฐ์‹ธ๋Š” ์š”์†Œ
//element : ๋ธ”๋Ÿญ์ด ํฌํ•จํ•˜๋Š” ์š”์†Œ์ค‘ ํ•œ ์กฐ๊ฐ
//modifier: ๋ธ”๋Ÿญ ๋˜๋Š” ์š”์†Œ์˜ ์†์„ฑ

โœ… ์–ธ์–ด ๋กœ์ง์ƒ์˜ ์ง„์ •ํ•œ ์บก์Аํ™”(๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ํ–‰์œ„๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๊ณ  // ์‹ค์ œ ๊ตฌํ˜„ ๋‚ด์šฉ ์ผ๋ถ€๋ฅผ ์™ธ๋ถ€์— ๊ฐ์ถ”์–ด ์€๋‹‰ํ•จ)๊ฐ€ ๋˜์ง€ ์•Š์Œ

CSS-in-Js(styled-components)

๐Ÿ’ก CSS๋ฅผ ์ปดํฌ๋„ŒํŠธ์˜ ์˜์—ญ์œผ๋กœ ๋ถˆ๋Ÿฌ ๋“ค์ž„

npm install --save styled-components


//package.json
{
  "resolutions": {
    "styled-components": "^5"
  }
}

๐Ÿ“— ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค๊ธฐ

import styled from "styled-components";

const A = styled.button`
	background-color:#ccc;
	color: #000;
`;

export default function App(){
	return <A>a</A>
}

๐Ÿ“— ์ปดํฌ๋„ŒํŠธ ํ™•์žฅ

import styled from "styled-components";

const A = styled.button`
	background-color:#ccc;
	color: #000;
`;

const Aa = styled(A)`
	padding: 10px;
`;

export default function App(){
	return (
      <>
        <A>a</A>
        <Aa>aa</Aa>
      </>
    )
}

๐Ÿ“— ์ „์—ญ ์Šคํƒ€์ผ

//GlobalStyle.js
import { createGlobalStyle } from "styled-components";

const GlobalStyle = createGlobalStyle`
	button{
		padding: 5px;
		color: blue;
	}
`;

export default GlobalStyle;

//App.js
import styled from "styled-components";
import GlobalStyle from "./GlobalStyle";

const Btn1 = styled.button`
	background : ${(props) => (props.color ? props.color : "white")};
`;
//const Btn1 = styled.button`
	//background : ${(props) => props.color || "white"};
//`;

export default function App() {
  return (
    <>
      <GlobalStyle />//์ „์—ญ ์Šคํƒ€์ผ ์ ์šฉ
      <Btn1>aa</Btn1>
      <Btn1 color="orange">Button1</Btn1>
    </>
  );
}
profile
๊ธฐ๋ณธ์— ์ถฉ์‹คํ•˜๋ฉฐ ์•ž์œผ๋กœ ๋ฐœ์ „ํ•˜๋Š”

0๊ฐœ์˜ ๋Œ“๊ธ€