๐ฅ 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 ์๋ฃ๊ตฌ์กฐ, ์๊ณ ๋ฆฌ์ฆ ๊ฐ์