props์™€ attrs

Props

ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ํ‘œํ˜„ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์Šคํƒ€์ผ์„ ์žก์•„์ค„ ๋•Œ ์œ ์šฉํ•˜๋‹ค.

import styled, { css } from "styled-components";
import { useBoolean } from "usehooks-ts";

type ButtonProps = {
  active: boolean,
};

// ์ด๋ ‡๊ฒŒ ํ•ด๋„ ๋˜๊ณ 
function background(props: ButtonProps) {
  return props.active ? "#00F" : "#FFF";
}

// ๋‚ด๋ถ€์— ์จ๋„ ๋œ๋‹ค.(์ด๋ฏธ ํƒ€์ž…์ด ์ง€์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋˜ํ•ด์ค„ ํ•„์š”์—†์Œ)
const Button =
  styled.button <
  ButtonProps >
  `
  background: #FFF;
  color: #000;
  border: 1px solid ${(props) => (props.active ? "#F00" : "#888")};

  ${(props) =>
    props.active &&
    css`
      background: #f00;
      color: #fff;
    `}
`;

export default function Switch() {
  const { value: active, toggle } = useBoolean(false);

  return (
    <Button type="button" onClick={toggle} active={active}>
      On/Off
    </Button>
  );
}

props.active && css์—์„œ css ๋Š” ์จ๋„ ๋˜๊ณ  ์•ˆ์จ๋„ ๋œ๋‹ค. ํƒ€์ž… ํ™•์žฅ์˜ ๋„์›€์„ ๋ฐ›๊ธฐ์œ„ํ•ด ์‚ฌ์šฉํ•  ๋ฟ์ด๋‹ค.

๊ณต์‹ ๋ฌธ์„œ ์˜ˆ์‹œ

input ์ปดํฌ๋„ŒํŠธ์˜ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ๊ฐ€ DOM ๋…ธ๋“œ์— ์ „๋‹ฌ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ inputColor prop์€ DOM์„ ํ†ตํ•˜์ง€ ์•Š์ง€๋งŒ type๊ณผ defaultValue๋Š” DOM์„ ํ†ตํ•œ๋‹ค. ๋น„ํ‘œ์ค€ ์†์„ฑ์€ ์ž๋™์œผ๋กœ ํ•„ํ„ฐ๋ง๋˜๋Š” ๊ฒƒ์ด๋‹ค.

attrs

attrs๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์†์„ฑ์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋ฒ„ํŠผ์—์„œ ๋˜๊ฒŒ ์ž์ฃผ ์“ฐ์ธ๋‹ค.

๊ณต์‹ ์‚ฌ์ดํŠธ ์˜ˆ์‹œ

Last updated