๐Ÿ”ฅ Today


  • [movie-website]

    • genre-page

      • ์›๋ž˜๋Š” ์ฒดํฌ๋ฐ•์Šค ๋Œ€์‹  ๋ฒ„ํŠผ์„ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค์–ด์„œ ์„ ํƒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜๋ ค ํ–ˆ๋Š”๋ฐ, ์ฒดํฌ๋ฐ•์Šค ์—ฐ์Šต ํ•ด๋ณด๋Š”๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์•„์„œ ์ˆ˜์ •ํ–ˆ๋‹ค. ๊ธˆ๋ฐฉ ํ•  ์ค„ ์•Œ์•˜๋Š”๋ฐ ํ•˜๋ฃจ์ข…์ผ ๊ฑธ๋ ธ๋‹ค..


  const [selectGenres, setselectGenres] = useState([]); //์œ ์ €๊ฐ€ ์„ ํƒํ•œ ์žฅ๋ฅด
  const [isAllChecked, setIsAllChecked] = useState(true); //๋ชจ๋“  ์žฅ๋ฅด box controller


  //์ „์ฒด ์„ ํƒ ํ•ด์ œ, ๋ชจ๋“  ์žฅ๋ฅด ํด๋ฆญ
  const onCancle = () => {
  setIsAllChecked(true);
  setselectGenres([]);
  };

  //๋ชจ๋“  ์žฅ๋ฅด ํด๋ฆญ์‹œ = ์œ ์ € ์„ ํƒ ์žฅ๋ฅด ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”, ๋ชจ๋“  ์žฅ๋ฅด ํด๋ฆญ
  const handleAll = (checked) => {
  setselectGenres([]);
  setIsAllChecked(true);
  };

  //์žฅ๋ฅด ํด๋ฆญ์‹œ, ์œ ์ € ์„ ํƒ ์žฅ๋ฅด ๋ฐฐ์—ด์— ์ถ”๊ฐ€๋จ, ์ด๋ฏธ ์„ ํƒ๋œ ์žฅ๋ฅด ํด๋ฆญ์‹œ ์‚ญ์ œ๋จ
  const handleCheck = (e, checked, id) => {
  setIsAllChecked(false);
  if (checked) {
  setselectGenres([...selectGenres, id]);
  } else {
  setselectGenres(selectGenres.filter((genre) => genre !== id));
  }
  };

  <S.Input
  type="checkbox"
  name="allGenres"
  id="allGenres"
  checked={isAllChecked}
  onChange={(e) => handleAll(e.target.checked)}
  />
  <S.Label htmlFor="allGenres">๋ชจ๋“  ์žฅ๋ฅด</S.Label>

  <input
  type="checkbox"
  name={genre.name}
  id={genre.id}
  defaultChecked={
  selectGenres.includes(genre.id) ? true : false //์„ ํƒ์‹œ, input attribute์— checked ์ถ”๊ฐ€๋จ
  }
  onChange={(e) => handleCheck(e, e.target.checked, genre.id)}
  />
  <label htmlFor={genre.id}>{genre.name}</label>


  • defaultChecked์™€ checked์˜ ์ฐจ์ด๊ฐ€ ์žˆ์–ด์„œ ์–ด๋–ค๊ฑธ ์‚ฌ์šฉํ•ด์•ผํ• ์ง€ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์šฐ์„  checked๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. defaultChecked๋Š” html์— ๋ฐ”๋กœ ๋ฐ˜์˜๋˜์ง€๋งŒ view์—๋Š” ๋ฐ”๋กœ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์•˜๊ณ , checked๋Š” html์— ๋ฐ”๋กœ ๋ฐ˜์˜๋˜์ง€ ์•Š๊ณ  view์—๋Š” ๋ฐ”๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ์ฐจ์ด๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋งŽ์ด ์ฐพ์•„๋ดค๋Š”๋ฐ onChange์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ..์™œ ์•ˆ๋˜๋Š”์ง€.. ์ด๊ฑด ๋” ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค.


๐Ÿ”ฅ To Do


  • [๋ถ€์ŠคํŠธ์ฝ”์Šค] project B
  • [Algorithm] javaScript ๋งค์ผ 1๋ฌธ์ œ ์ด์ƒ ํ’€๊ธฐ
  • [๋ถ€์ŠคํŠธ์ฝ”์Šค] CS ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ•์˜