240209
๋ด์คํผ๋ ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ
ํ์ฌ header์ nav์์ ์ ํ๋ ์นดํ ๊ณ ๋ฆฌ์ ๋ง์ถฐ ํด๋น ์นดํ ๊ณ ๋ฆฌ ๋ฆฌ์คํธ ํญ๋ชฉ์ ๋จ๊ฒํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์์๋ค.

์ด์ ์ ๋ฐฐ์ ๋ ๊ธฐ๋ฅ์ด๋ผ ์ ๊ตฌํํ ์ ์์๋๋ฐ, ์์ง redux๋ ์ต์์น์์ง๋ง ๋ฐฐ์ ๋ ๋๋ก ์ฐ๋ ์ ๋์๋ค.
ํ์ง๋ง !!
๋๋ ์ ํ๋ ํด๋น ํ๊ทธ (์ฌ๊ธฐ์ Tab) ์ textContent (ํ๊ทธ์ฌ์ด ํ ์คํธ) ๋ฅผ ๊ฐ์ ธ์ค๊ธธ ์์น์์๊ณ
(๋ฐฐ์ด ๋ด์ฉ์์๋ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ ํํ๋ฉด, ํด๋ฆญ์ด๋ฒคํธ๋ก - event.target.textContent๋ฅผ ๊ฐ์ ธ์ค๋ ์์ด์๋ค)
์ ํ๋ ํ๊ทธ์ className์ผ๋ก ๊ฐ์ ธ์ค๊ณ ์ถ์๋ค.
const Header = () => {
const activeCategory = useSelector((state) => state.category);
const dispatch = useDispatch();
const onActiveCategory = (e) => {
if (e.target === e.target.currentTarget) return;
// console.dir(e.target); // ํ์ธํด๋ณด๋ e.target์ className์ด className: "sc-dQmiwx fhIQdM ํ"
dispatch(setCategory(e.target.className));
//console.log(activeCategory);
};
return (
<HeaderWrapper>
<div>
<img src={logoImg} width={300} alt="logo" />
</div>
<MainNav>
<TabsWrapper onClick={onActiveCategory}>
<Tab className="ํ" $isActive={activeCategory}>
ํ
</Tab>
<Tab className="ํด๋์๋ฐ์ฌ์ฆ" $isActive={activeCategory}>
ํด๋์ / ์ฌ์ฆ
</Tab>
</TabsWrapper>
๊ทธ๋์ e.target.className์ ์ผ์ผ๋ ๋ฌธ์ ๊ฐ ์์๋ค. ์ ํ๋ ๋๋ก ๊ธฐ๋ฅ์ด ๋์ง ์์ ์ฝ์๋ก ํ์ธํด๋ณด๋
ํ ์ด๋ผ๋ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ํํ์ ๋ e.target.className์ด , ๋ด๊ฐ ๋ถ์ฌํ className="ํ" ์ด ์๋๋ผ,
className: "sc-dQmiwx fhIQdM ํ"
์ด๋ฐ ์ด์ํ ๋ฌธ์์ด?! ๋ก ๋จ๋ ๊ฒ์ด์๋ท..!!
e.target ์ ์ฝ์๋ก ํ์ธํด๋ณด์๋ค.
(์ฐธ๊ณ ๋ก ์ฌ๊ธฐ์ console.log๋ก ๊ทธ๋ฅ ํ์ธํ๋ฉด ํด๋น <li> ํ๊ทธ - HTML ํ๊ทธ body ๋ด์ฉ๋ง ๋ฌ๋ค.
DOM JS ๊ฐ์ฒด์ ์ ์ฒด ํํ์ ๋ณด๋ ค๊ณ ํ ๋ ์ ์ฉํ๋ค๋, console.dir ๋ฅผ ์จ์ผ ์ํ๋ ๊ฐ์ฒด ๋ด์ฉ์ ๋ค ๋ณผ ์๊ฐ ์๋ค)

e.target ๊ฐ์ฒด ์์๋, ์์ธํ ๋ณด๋ classList ํค ์์ .. ์์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ฌํผ DOMTokenList์ 3๊ฐ์ง ์์๊ฐ ์๋ ๊ฑฐ ๊ฐ์๋ค. ๋ด๊ฐ ๋ถ์ฌํ ํด๋์ค๋ค์์ ์ธ๋ฑ์ค 2๋ฒ ์์์ธ ๋ฏ ํ๋ค !
(๋ํ ํฐ๋ฆฌ์คํธ๋.. ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด๋ก ํํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ์ฌ ํ ํฐ ์งํฉ์ผ๋ก ๋ง๋ค์ด ์งํฉ์ ์กฐ์ํ๊ธฐ ์ํ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ ์ ์ฌ๋ฐฐ์ด ์ธํฐํ์ด์ค - .. ๋ผ๋๋ฐ ์ฌํผ ๊ทธ๋ฐ ํ ํฐ ์งํฉ .. ์ฌํผ ์์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค . ๋ด์ ์์ธํ ์์๋ณด๋๊ฑธ๋ก..)
console.dir(e.target.classList) ๋ก ํ์ธํด๋ณด๋ ์ ๋ด์ฉ DOMTokenList(3) [ .... ] ์ด ๊ทธ๋๋ก ๋ด๊ณ
console.log(e.target.classList[2]) ๋ก ํ์ธํ๋ ์ ๋ง๋ก

๋ด๊ฐ ์ํ๋, ํด๋์ค๋ค์์ด ๊ทธ๋๋ก ๋ด๋ค !
const onActiveCategory = (e) => {
if (e.target === e.target.currentTarget) return;
console.log(e.target.classList[2]);
dispatch(setCategory(e.target.classList[2]));
};
return (
<HeaderWrapper>
<div>
<img src={logoImg} width={300} alt="logo" />
</div>
<MainNav>
<TabsWrapper onClick={onActiveCategory}>
<Tab className="ํ" $isActive={activeCategory}>
ํ
</Tab>
<Tab className="ํด๋์๋ฐ์ฌ์ฆ" $isActive={activeCategory}>
ํด๋์ / ์ฌ์ฆ
</Tab>
</TabsWrapper>
๊ทธ๋์ ์์๊ฐ์ด, classList[2] ๋ก ๊ฐ์ ธ์์ฃผ๋ ํด๋น ์นดํ ๊ณ ๋ฆฌ ์ ํ์ ํญ๋ชฉ์ด ์ ๋ด๋ค *ใ * ํธ์ ,.. ๐ญ
ํ์ง๋ง ๊ตณ์ด ์ ๋ ๊ฒ ํด์ผํ๋ (?) ํด์ ๊ทธ๋ฅ id ๋ฅผ ๋ถ์ฌํด์ ํด์ฃผ๊ธฐ๋ก ํ๋ค ใ ใ ..
ํ๊ทธ์ id ๋ถ์ฌํ๊ณ , e.target.id ํด์ ๊ฐ์ ธ์ค๋ฉด ๊ทธ๋ฅ ๊น๋ !! ํ๋ค ใ ใ