์ค๋์ ์ฑ๊ธํจ์ ๋ ํผ์ ๋ฌ๋ฆฌ๊ณ ์์ง ์๋์ง ๋ค์ ์จ์ ์ฌ๊ณ ๋๋ฌ๋ด์ผ ํจ์ ์๊ฒ ๋์๋ค.
๊ทธ๋ฆฌ๊ณ ์ํต์ด ์ง์ ํ ์ํต์ธ์ง ๋ค์ ํ๋ฒ ์ ๊ฒํด์ผ ํจ์ ์๊ฒ ๋์๋ค.
๋ฌผ๋ก ์์ง 3์ผ์ฐจ์ด๊ณ ์ค๋๋ฅผ ์ฐพ๋ ๋ถ๋ถ์ ๋์์์ด ์ด๋ ค์ด ๋ถ๋ถ์ด์ง๋ง
์ํต์ ๊ทธ ๋ถ๋ถ์ ๊ณ์ ์กฐ์จํ๊ฒ๋ ํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด๋
์ง์ ํ ์ํต์ ์ํด ๋์์์ด ๋
ธ๋ ฅํ๊ณ ๋ด ์ค์ค๋ก๋ฅผ ์ ๊ฒํ์.
ํฐ ๊ทธ๋ฆผ๊ณผ ์ ์ฒด์ ์ธ ํ๋ฆ์ ๋ณด๋๋ก ๋ ๋
ธ๋ ฅํ์.
๋ด ์ฌ์ดํธ๋ ์ ํ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ด 3๊ฐ์ง ์์๋ค.
1. ์ํ ํ์ด์ง์์ ์ํ ์ถ๊ฐ
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ 3๊ฐ์ง ๊ฒฝ์ฐ์ ์๊ฐ ๋์จ๋ค
New - product(์๋ก ๋ง๋ฆ) : ๋ฐฉ๊ธ ์
๋ ฅํ ์๋
Add - product(๊ธฐ์กด์ ์กด์ฌ) : ๋ฐฉ๊ธ ์
๋ ฅํ ์๋ + ๊ธฐ์กด์ ์๋ ์๋
Edit - product(๊ธฐ์กด์ ์กด์ฌ) : ๋ฐฉ๊ธ ์
๋ ฅํ ์๋ === ๋ณ๊ฒฝ๋์ด ์ฐ์ฌ์ผ ํ๋ ์๋
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ํํ ๋ฐฑ์๋์์ ์ํต์ ์ํด header์ ์ด ๋ถ๋ถ์ ํฌํจํด ๋ณด๋ด์ฃผ๊ธฐ๋ก ํ๋ค.
์ค๋ ํ ๋ก ํ๋ฉฐ ์น ํ์ ์์ฑํ ๋ถ๋ถ
๊ทธ๋ด๋ ์์ดํ
์ ๊ฐ์ง๊ณ ์๋ ํ๋ก ํธ๊ฐ ํด์ผ ํ๋?
์๋๋ฉด ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฑ์ด ํด์ผ ํ๋?
๋ฐฑ์๊ฒ ๋ฌผ์ผ๋ ๋ฐฑ์ ์ ๋ ฌ์ ๋ถ๋ฌ ์ฌ๋๋ง๋ค
1. ๋ฐ์ดํฐ ์ทจํฉ 2. ๋ฐ์ดํฐ ์ ๋ ฌ
์ด 2๊ฐ์ง๋ฅผ ๊ณ์ ๋ฐ๋ณตํด์ผ ํ๋ค๊ณ ํ๋ค.
์ด ๋ถ๋ถ๋ง ๋ณด๋ฉด ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ ๋ฐ์ ๊ณ์ ์ฌ์ฉํ๋ฉด ๋๋ ํ๋ก ํธ์์ ํ๋ ๊ฒ ๋ง์ ๋ณด์ผ ์ ์๋ค.
ํ์ง๋ง ์ ์๊ฐํด ๋ณด๋ฉด js ๋ ํฐ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ผ๊ณ ๋์จ ์ธ์ด๊ฐ ์๋๋ค.
๋ฐฑ์๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ถ๋ถ๋ค์ด ๋ ์ ๋์ด ์๋ค. ๊ทธ๋์ ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ๋ํ ๊ธฐ๋ฅ์ด ๋ ๋ฐ๋ฌ๋์ด ์๋ค.
์์ธํ ๋ถ๋ถ์ ๋ชจ๋ฅด์ง๋ง ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฐฑ์์ ํฐ ๋ฐ์ดํฐ์ ์ ๋ ฌ์ด๋ ๊ด๋ฆฌ๋ฅผ ํ๋ ๊ฒ ๋ง๋ค๊ณ ํ๋ค.
๊ฒฐ๋ก ! ๋ฐฑ์์!
ํจ์์์์ useState ๋ฅผ ๋ณ๊ฒฝํ๊ณ ๊ทธ ๊ฐ์ ๋ฐ๋ก ์ฌ์ฉํ๋ฉด ๋ฌธ์ ๊ฐ ์๊ฒผ๋ ๋ถ๋ถ ๋๋ฌธ์ 2๊ฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ์์๋ค.
function ProductListHeader({ productMenu, setCurCategoty }) {
const [categoryCheck, setCategoryCheck] = useState(0);
const clickCategory = id => {
setCurCategoty(`${id}0`);
setCategoryCheck(id);
};
return (
<button className={`category ${categoryCheck === i ? 'category-checked' : '' }`}
key={i} onClick={() => clickCategory(i)}>
</button>
)
}
ํ์ง๋ง ์๊ฐํด ๋ณด๋
๋ด๊ฐ ์ํ๋ฅผ ์ฌ์ฉํ๋ ๋ถ๋ถ์
ui ๋ถ๋ถ์ด๋ผ ๋น๋๊ธฐ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๊ฒ์ด ์๋๋ผ
์ ์์ ์ผ๋ก ๋ฐ์์ด ๋๋ ๋ก์ง์ด์๋ค...
์ํ... ๊ฒฐ๊ตญ ๋์ค์ ์๋ฌ๊ฐ ์๊ธฐ๋ฉด ๋ ์ฐพ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ ์ฝ๋์๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ๊น๋ํ๊ฒ ํ ๊ฐ๋ก ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ์ฝ๋๋ก ์์ ํ๋ค.
function ProductListHeader({ productMenu, setCurrentCategory, currentCategory }) {
return (
<button className={`category ${currentCategory === i ? 'category-checked' : '' }`}
key={i} onClick={() => setCurrentCategory(i)}>
</button>
)
}
๋ด์ผ๋ถํฐ๋ ๊ทธ๋ฆฌ๊ณ standup ๋ฏธํ ์ ์ทจ์ง์ ๋ง๊ฒ ์งง๊ณ ๊ตต์ standup Meeting ํ๊ธฐ!!
๊ทธ๋๋ ์ค๋ ์ ์ผ ์ค์ํ ์ ์ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ์ผํ ๋ ๋ฌ๋ ค๊ฐ์ง ๋ง๊ณ ํ ํฌ๋ฅผ ๋ค์ ํ์ธํ๊ณ ์ํต์ ๋ค์ ๊ณ ๋ฏผํ์!