React

[React] CDD ๊ฐœ๋ฐœ ๋„๊ตฌ Styled Components Props ํ™œ์šฉ

mellomello.made 2022. 7. 1. 01:46

๐Ÿ”– Props ํ™œ์šฉํ•˜๊ธฐ

Styled Component๋กœ ๋งŒ๋“  ์ปดํฌ๋„ŒํŠธ๋„ React ์ปดํฌ๋„ŒํŠธ์ฒ˜๋Ÿผ props๋ฅผ ๋‚ด๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค.  ๋‚ด๋ ค์ค€ props ๊ฐ’์— ๋”ฐ๋ผ์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

1) Props๋กœ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋งํ•˜๊ธฐ

//์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•ด <Button> ์ปดํฌ๋„ŒํŠธ์— skyblue ๋ผ๋Š” props๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , 
//์žˆ์œผ๋ฉด ๋ฐฐ๊ฒฝ์ƒ‰์œผ๋กœ skyblue๋ฅผ, ์—†์„ ๊ฒฝ์šฐ white๋ฅผ ์ง€์ •ํ•ด์ฃผ๋Š” ์ฝ”๋“œ.

const Button = styled.button`
	background: ${ (props) => props.skyblue? "skyblue" : "white"}
`;
import styled from "styled-components";
import GlobalStyle from "./GlobalStyle";
//๋ฐ›์•„์˜จ prop์— ๋”ฐ๋ผ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
const Button1 = styled.button`
  background: ${(props) => (props.skyblue ? "skyblue" : "white")};
`;

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

2) Props ๊ฐ’์œผ๋กœ ๋ Œ๋”๋งํ•˜๊ธฐ

// 1. props์˜ ๊ฐ’์„ ํ†ต์งธ๋กœ ํ™œ์šฉํ•ด์„œ ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

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

// 2. props.color ๊ฐ€ ์—†๋‹ค๋ฉด white๋ฅผ, 
//props.color ๊ฐ€ ์žˆ๋‹ค๋ฉด props.color์˜ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™€์„œ ์Šคํƒ€์ผ ์†์„ฑ ๊ฐ’์œผ๋กœ ๋ฆฌํ„ด

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

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

//๋ฐ›์•„์˜จ prop ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์ด์šฉํ•ด ๋ Œ๋”๋งํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค
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>
    </>
  );
}

4. ์ „์—ญ ์Šคํƒ€์ผ ์„ค์ •ํ•˜๊ธฐ

1. ์ „์—ญ ์Šคํƒ€์ผ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด Styled Components์—์„œ createGlobalStyle ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

import { createGlobalStyle } from "styled-components";

2. ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด CSS ํŒŒ์ผ์—์„œ ์ž‘์„ฑํ•˜๋“ฏ ์„ค์ •ํ•ด์ฃผ๊ณ  ์‹ถ์€ ์Šคํƒ€์ผ์„ ์ž‘์„ฑํ•œ๋‹ค.


const GlobalStyle = createGlobalStyle`
	button {
	padding : 5px;
    margin : 2px;
    border-radius : 5px;
	}
`

3. <GlobalStyle> ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ตœ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ์ „์—ญ์— <GlobalStyle> ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํƒ€์ผ์ด ์ ์šฉ๋œ๋‹ค.

function App() {
	return (
		<>
			<GlobalStyle />
			<Button>์ „์—ญ ์Šคํƒ€์ผ ์ ์šฉํ•˜๊ธฐ</Button>
		</>
	);
}