๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Dev-diary/์ผ์ƒ

์˜ค๋Š˜ ๋ฐฐ์šด๊ฒƒ๋“ค ์ •๋ฆฌ

by ciocio 2022. 4. 18.

๐Ÿ’ก 0๋ถ€ํ„ฐ ์›ํ•˜๋Š” ์ˆซ์ž๊นŒ์ง€ ๋ชจ๋“  ์ˆ˜๋ฅผ ์š”์†Œ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ

 

// Array.from()์œผ๋กœ ๊ธธ์ด๊ฐ€ 10, ๊ฐ’์ด (0~9)์ธ ๋ฐฐ์—ด ์ƒ์„ฑ
const arr = Array.from({length: 10}, (val, idx) => idx);

console.log(arr);         // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(arr.length);  // 10

 

๋ถˆ๋Ÿฌ์˜จ ๋ฐ์ดํ„ฐ์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง„ ๋ฐฐ์—ด์„ ํ•œ๋ฒˆ์— ์ƒ์„ฑ or ์‚ญ์ œํ•ด์•ผํ•˜๋Š” ์ด๋ฒคํŠธ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ

์ด ๋•Œ ์ด ๋ฐฉ๋ฒ•์„ ์œ ์šฉํ•˜๊ฒŒ ์ผ๋‹ค. ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์„ ์ˆ˜๋„ ..?!!

 


๐Ÿ’ก checkbox ํƒ€์ž…์˜ input ํƒœ๊ทธ๋Š” 'checked' ์†์„ฑ์„ ๊ฐ–๋Š”๋‹ค

 

<label><input type="checkbox" /> ์ฒดํฌ X </label>
<label><input type="checkbox" checked /> ์ฒดํฌ O </label>

 

๋ฆฌ์•กํŠธ์—์„œ useRef ํ›…์œผ๋กœ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ๊ด€๋ฆฌํ•ด์•ผํ•˜๋‚˜ .. ๊ณ ๋ฏผํ–ˆ์—ˆ๋Š”๋ฐ

checked ํƒ€์ž…์ด ์žˆ๋‹ค๋Š” ๊ฑธ ์•Œ๊ณ  checked = { ์กฐ๊ฑด ? true : false } ์œผ๋กœ ๋กœ์ง์„ ์ž‘์„ฑํ–ˆ๋‹ค.

 


๐Ÿ’ก ํด๋ผ์ด์–ธํŠธ ๋‹จ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•ด์•ผํ•  ๋•Œ (ex.localhost:3000) ์‚ฌ์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•

 

<img alt="png01" src="img/01.png" />

 

๋‚˜๋Š” ์™œ ์—ฌํƒœ ๋ณด์กฐ ์„œ๋ฒ„๋ฅผ ์—ด์–ด์„œ (ex.localhost:5000) ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•ด์™”๋Š”๊ฐ€ ...

์„œ๋ฒ„๊ฐ€ ์—†์„ ๋• ๊ทธ๋ƒฅ (๋ฆฌ์•กํŠธ ๊ธฐ์ค€) public ํด๋” ๋‚ด๋ถ€์—

img ํด๋” ๋งŒ๋“ค์–ด์„œ ์ด๋ฏธ์ง€ ๋„ฃ์–ด๋†“์œผ๋ฉด ์ด๋ ‡๊ฒŒ ์‰ฝ๊ฒŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค !!

 


๐Ÿ’ก Typescript ์—์„œ styled-component (์ปค์Šคํ…€) props ๋‚ด๋ ค์ฃผ๊ธฐ

 

import styled, { css } from 'styled-components';

interface PropsType {
  isSelected: boolean;
}

const SelectBox = styled.input<PropsType>`
  opacity: 0%;
  background-color: #000;
  // ๋ฐฉ๋ฒ• 01
  ${(props) => 
    props.isSelected 
      ? css`
        opacity: 100%;
      `
      : css``
  }
  // ๋ฐฉ๋ฒ• 02
  ${(props) =>
    props.isSelected && `
      opacity: 100%;
    `
  }
`

function BasicForm(){
  return (
    <SelectBox type="checkbox" isSelected={ ์กฐ๊ฑด ? true : false }/>
  );    
}

 

HTML ํƒœ๊ทธ์— ์›ํ•˜๋Š” ์†์„ฑ๊ฐ’์ด ์—†๋‹ค๋ฉด,

ํ˜น์€ CSS์—์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์€ ์ปค์Šคํ…€ ์†์„ฑ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด,

์ด๋ ‡๊ฒŒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค !-! ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•  ๋•Œ ์ข‹๋‹ค ๐Ÿ˜Š

 


๐Ÿ’ก styled-component ์—์„œ hover ์†์„ฑ ๋ฌธ๋ฒ• (์ž๊พธ ๊นŒ๋จน์–ด์„œ ์ถ”๊ฐ€)

 

import styled from 'styled-components';

const Button = styled.button`
  border: none;
  &:hover{
    color: blue;
  }
`

 

styled-component ๋ž‘ hover ์†์„ฑ ์กฐํ•ฉ ์•„์ฃผ ์œ ์šฉ ... ๐Ÿ‘๐Ÿ‘

 


๐Ÿ’ก ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ™˜๊ฒฝ์—์„œ npm ๋ชจ๋“ˆ ์„ค์น˜ํ•  ๋•Œ ๋ช…๋ น๋ฌธ ์ฃผ์˜

 

npm install @types/[๋ชจ๋“ˆ ์ด๋ฆ„] --save-dev

 

์ž๊พธ npm install [๋ชจ๋“ˆ ์ด๋ฆ„] ์‹œ๋„ํ•˜๋Š” ๋‚ด ์† ๋ฉˆ์ถฐ ๐Ÿ˜จ


 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€