์ฌ์ด๋๋ฐ๋ฅผ ๊ตฌํํด๋ณด์.
๋ช ํํ ์๊ตฌ์ฌํญ ์์ด ๋จ์ง ๊ฐ์์ค ๋ชฉ๋ก์ ์กฐํํ ์ ์๋ ์ฌ์ด๋๋ฐ๋ฅผ ๊ตฌํํด์ผ ํ๋ค.
์ด๋ค ์์ผ๋ก ์๋ํด์ผ ํ ์ง ๊ฐ์ด ์์์, ๋ ํผ๋ฐ์ค๋ฅผ ์ฐธ๊ณ ํ๋ค.
Ant Design
Ant design ์ปดํฌ๋ํธ์์ ๋ค์ํ ์ฌ์ด๋๋ฐ๋ฅผ ์ ๊ณตํ๊ณ ์๋ค. ์ค์ ๋ก ์กฐ์ํด๋ณผ ์ ์๊ณ , ๋๋ต์ ์ธ ์ฝ๋๋ ์ ๊ณตํ๋ค. ๊ทธ ์ค ์ ์ด๋ฏธ์ง์ ์๋ ์ฌ์ด๋๋ฐ ์ปดํฌ๋ํธ๋ฅผ ์ฐธ๊ณ ํ๋ค.
Ant Design ์ฝ๋์ ์ผ๋ถ๋ถ์ ๋ฐ์ทํด์๋ค. ์ด์ค Menu ์ปดํฌ๋ํธ๋ฅผ ๋ณด๋ฉด, props๋ก items๋ฅผ ๋ฐ๊ณ ์๋ค. items์ ์ ๋ฌ๋๋ ์์ ๊ฐ์ฒด๋ฅผ ์ดํด๋ดค๋๋, children์ด๋ผ๋ ํ๋กํผํฐ๋ฅผ ํ์ธํ ์ ์์๋ค. ์ฌ๊ธฐ์๋ ์๋ธ ๋ฉ๋ด๋ค์ ์ ๋ณด๊ฐ ๋ด๊ฒจ ์๋ค.
์ฆ, Menu ์ปดํฌ๋ํธ์ ์๋ธ ๋ฉ๋ด๊ฐ ํฌํจ๋ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ฉด Menu ์ปดํฌ๋ํธ ๋ด์์ ์๋ธ ๋ฉ๋ด๋ค์ ๋ ๋๋งํ๋ค.
์๊ตฌ์ฌํญ ๋ถ์
Ant design์์ ์ฐธ๊ณ ํ ์ฌ์ด๋๋ฐ ์๋ ๋ฐฉ์๊ณผ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๊ตฌ์ฌํญ์ ๋์ดํด ๋ณด์๋ค.
๊ทธ ๊ฒฐ๊ณผ ์ธ ๊ฐ์ง ์ปดํฌ๋ํธ๊ฐ ํ์ํ๋ค. 1. ๋ฉ์ธ ๋ฉ๋ด(๊ฑด๋ฌผ) 2. ๊ทธ ์์ ๋ค์ด๊ฐ ์๋ธ ๋ฉ๋ด(๊ฐ์์ค) 3. ์ปจํ ์ด๋
์ข ๋ ๊ตฌ์ฒด์ ์ธ ์๊ตฌ๋ถ์์ ๋ค์๊ณผ ๊ฐ์๋ค.
์ปดํฌ๋ํธ ๊ตฌ์กฐ
Sidebar: ์ปจํ ์ด๋
- ์ฌ์ด๋๋ฐ ์ ์ฒด ๋ฐ์ค
- useRecoilValue๋ก ์กฐํํ ์ํ๋ฅผ ํ์ ์ปดํฌ๋ํธ์ ์ ๋ฌ
SidebarItem: ๋ฉ๋ด
๋ฉ์ธ ๋ฉ๋ด์ ์๋ธ ๋ฉ๋ด๋ฅผ ํ ์ปดํฌ๋ํธ๋ก ๊ตฌํํ๋ค. ๋์ ๊ธฐ๋ฅ์ด ๊ฑฐ์ ๋์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ฒํผ์ผ๋ก์ ๋์ํ๋ค. (=ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ๋ฐ๊ณ , ํน์ ๋์์ ์ํํ๋ค.)
- props๋ก ๋ฐ์ ์ ๋ณด๋ฅผ ๋ ๋๋ง ํ๋ค.
์ฌ์ค ์ด ๋ ๊ฐ์ง๊ฐ ์ ๋ถ์๋ค. ๊ทธ๋ ๋ค๋ฉด ๊ทธ ๋ค์ ๋ฌธ์ ๋, ์ด ๋ ๊ฐ์ง๋ฅผ ์ด๋ป๊ฒ ๊ตฌ๋ถํ ๊ฒ์ธ๊ฐ์๋๋ฐ, ๊ฐ์ธ์ ์ผ๋ก flag ๋ณ์๋ฅผ ๋๋ ๊ฑธ ์ข์ํ์ง ์๋๋ค. ๊ทธ๋์ ์๊ฐํด ๋ธ ๋ฐฉ๋ฒ์ children props์ ์ฌ๋ถ๋ก ๊ตฌ๋ถํ๋ ๋ฐฉ์์ด๋ค. children prop์ด ์กด์ฌํ๋ฉด ๋ฉ์ธ ๋ฉ๋ด, ์กด์ฌํ์ง ์์ผ๋ฉด ์๋ธ ๋ฉ๋ด์ด๋ค. ๋ฐ๋ผ์ children props ์กด์ฌ ์ฌ๋ถ๋ฅผ ์กฐ๊ฑด์ผ๋ก, ํ ์ปดํฌ๋ํธ ๋ด์์ ๋ ๊ฐ์ง ๋ฒ์ ์ ๊ตฌํํ๋ค.
๋งํฌ์
๋งํฌ์ ์ผ๋ก๋ ulํ๊ทธ์ liํ๊ทธ๋ฅผ ์ด์ฉํ๋ค. navigation, menu์ ๊ฒฝ์ฐ ul ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ผ๋ฐ์ ์ธ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค. SidebarItem ์ปดํฌ๋ํธ๋ฅผ li ํ๊ทธ๋ก ๋ง๋ค์๋ค.
์ค์ ์ฝ๋
Sidebar
ulํ๊ทธ ๋ด์ liํ๊ทธ์ธ SidebarItem ์ปดํฌ๋ํธ๋ค์ ๋ ๋๋งํ๋ค.
SidebarItem
- children์ด ์์ผ๋ฉด SidebarItem์ ์ฌ์ฉํด children props๋ฅผ ๋ ๋๋งํ๋ค.
- ๋ฉ์ธ ๋ฉ๋ด/์๋ธ ๋ฉ๋ด ๋ณ๋ก ํด๋ฆญ ์์ ๋ฐ์ํด์ผ ํ๋ ๋์์ด ๋ค๋ฅด๋ค. ๋ฐ๋ผ์ ์ผํญ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด onClick prop์ ๊ฐ๊ธฐ ๋ค๋ฅธ ํจ์๋ฅผ ๋งคํํ๋ค.
- ๋ฉ์ธ ๋ฉ๋ด์ ๊ฒฝ์ฐ ํ ๊ธ ๋ฐฉ์์ผ๋ก ์๋ํด์ผ ํ๋ฏ๋ก,
open
state๋ฅผ ์ ์ํดopen
์ํ์ ๋ฐ๋ผ children์ ๋ ๋๋งํ๋ค. onClick ์open
state๋ฅผ ํ ๊ธํ๋ ํจ์ openSubMenu๋ฅผ ์คํํ๋ค. - ์๋ธ ๋ฉ๋ด์ ๊ฒฝ์ฐ ํด๋ฆญ ์ ์กฐํํ ๊ฐ์์ค์ด ๋ณ๊ฒฝ๋์ด์ผ ํ๋ค. useRecoilState์ setํจ์๋ฅผ ์ฌ์ฉํด atom๊ฐ์ ์ ๋ฐ์ดํธ ํ๋ selectClassroom ํจ์๋ฅผ ์คํํ๋ค.
- ๋ฉ์ธ ๋ฉ๋ด์ ๊ฒฝ์ฐ ํ ๊ธ ๋ฐฉ์์ผ๋ก ์๋ํด์ผ ํ๋ฏ๋ก,
์ ๋ฆฌํ์๋ฉด SidebarItem์
- ๊ฐ๋ณ ๊ฑด๋ฌผ, ๊ฐ์์ค์ ์๋ฏธํ๋ค.
- props๋ก ์์ ์ด ํด๋นํ๋ ๊ฑด๋ฌผ, ๊ฐ์์ค์ ์ด๋ฆ์ ๋ฐ๋๋ค. ์ด๋ฅผ ๋ ๋๋งํ๋ค.
- ๋ฉ์ธ ๋ฉ๋ด์ ๊ฒฝ์ฐ ์๋ธ ๋ฉ๋ด๋ค์ open/closeํ๋ ๊ธฐ๋ฅ ๋ง์ ์ํํ๋ค.
์ฌ์ด๋๋ฐ ๊ตฌํ ๋น์์๋ ๋๊ด ํํฉ ์กฐํ ์์ฒญ ์ ๊ฐ์์ค ์ ๋ณด๋ง ๋ณด๋ด๋ฉด ๋๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ๋ฐ๋ฐ ์ต์ข ์ ์ธ API์์๋ ๊ฑด๋ฌผ ์ ๋ณด์ ๊ฐ์์ค ์ ๋ณด ๋ ๊ฐ๊ฐ ๋ชจ๋ ํ์ํ๋ค๊ณ ํด์, ์ด๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ๊ณ ๋ฏผ์ด ๋๋ค.
'ํ๋ก์ ํธ ๊ธฐ๋ก > YSS | ์ฐ์ธ๋ํ๊ต ๊ณต๊ฐ๋๊ด ์๋น์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
(์๋ฌ ํด๊ฒฐ) Union type๊ณผ ํ์ ๊ฐ๋ ํจ๊ป ์ฌ์ฉํ๊ธฐ (1) | 2022.09.19 |
---|---|
ํ ์ด ํ๋ก์ ํธ๋ฅผ ์ํ css ๋ฐฉ์ ๊ฒฐ์ ํ๊ธฐ (0) | 2022.08.10 |