Intro
์๋ ํ์ธ์. ์ด๋ฒ์๊ฐ์๋ React MUI์์ anchorEl ๋ ๋ฌด์์ด๋ฉฐ ์ฌ์ฉ ์ด์ ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
anchorEl ?
Material-UI (MUI)์์ ํ์ค๋ฒ(Popover)๋ ๋ฉ๋ด(Menu)์ ๊ฐ์ ์ปดํฌ๋ํธ์์ ์ฌ์ฉ๋๋ ์์ฑ์ผ๋ก, ํ์ ์ ์์น๋ฅผ ์ง์ ํ๋ ์ญํ ์ ํฉ๋๋ค. ์ด ์์ฑ์ ํ์ ์ด ์ด๋ฆด ์์น์ ๊ธฐ์ค์ด ๋๋ ์์(Element)๋ฅผ ์ง์ ํฉ๋๋ค.
์ฃผ์ ์ปดํฌ๋ํธ์์์ anchorEl ์ฌ์ฉ
1. Popover
Popover ์ปดํฌ๋ํธ๋ ๊ธฐ์ค ์์์ธ anchorEl์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ฉด์ ํ์๋ฉ๋๋ค.
<Popover
open={Boolean(anchorEl)}
anchorEl={anchorEl}
onClose={handleClose}
>
<Typography>The content of the Popover.</Typography>
</Popover>
2. Menu
Menu ์ปดํฌ๋ํธ๋ ์ฃผ๋ก ๋ค๋น๊ฒ์ด์ ๋๋ ๋๋กญ๋ค์ด ๋ฉ๋ด๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ๋ฉ๋๋ค. anchorEl์ ํตํด ๋ฉ๋ด๊ฐ ๋ํ๋ ์์น๋ฅผ ์ง์ ํฉ๋๋ค.
<Menu
anchorEl={anchorEl}
open={Boolean(anchorEl)}
onClose={handleClose}
>
<MenuItem onClick={handleClose}>Profile</MenuItem>
<MenuItem onClick={handleClose}>My account</MenuItem>
</Menu>
anchorEl ์ฌ์ฉ์ด์
anchorEl์ ์ฌ์ฉํ๋ ์ด์ ๋ ํ์ ์ปดํฌ๋ํธ(Popover, Menu ๋ฑ)๊ฐ ํ๋ฉด์์ ์ด๋์ ์์นํ ์ง๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด์์ ๋๋ค.
1. ์ฌ์ฉ์ ๊ฒฝํ ํฅ์ ์ง๊ด์ ์ธ ์์น ์ง์ :
anchorEl์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ์ํธ์์ฉํ ์์(์: ๋ฒํผ, ์์ด์ฝ)๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ ์ด ๋ํ๋๋๋ก ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๊ทธ ๋ฒํผ ๋ฐ๋ก ์๋์ ๋ฉ๋ด๊ฐ ์ด๋ฆฌ๋๋ก ํ ์ ์์ต๋๋ค. ์ด๋ ํ์ ์ด ์ฌ์ฉ์๊ฐ ๊ธฐ๋ํ๋ ์์น์ ๋ํ๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ ๊ฒฝํ์ด ํฅ์๋ฉ๋๋ค. ๋ฌธ๋งฅ ์ ์ง: ํ์ ์ด ํธ๋ฆฌ๊ฑฐ๋ ์์์ ๊ด๋ จ๋ ์ ๋ณด๋ ์ต์ ์ ์ ๊ณตํ๋ ๊ฒฝ์ฐ, ๊ทธ ์์์ ์๊ฐ์ ์ผ๋ก ๊ฐ๊น์ด ์์น์ ํ์ ์ด ๋ํ๋๋ ๊ฒ์ด ์์ฐ์ค๋ฝ์ต๋๋ค. anchorEl์ ํตํด ์ด๋ฌํ ์์น๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
2. ์์น ์ ์ด์ ์ ์ฐ์ฑ ๋์ ์ธ ์์น ์ค์ :
anchorEl์ ์ฌ์ฉํ๋ฉด ํ์ ์ ์์น๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋ฉด์ ๋ค๋ฅธ ๋ถ๋ถ์์ ์ฌ๋ฌ ์์๋ฅผ ํด๋ฆญํ ๋๋ง๋ค ํ์ ์ด ๊ทธ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ํ๋๋๋ก ํ ์ ์์ต๋๋ค. ๋ฐ์ํ ๋์์ธ: ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ๋ ๋ ์ด์์์์ ํ์ ์ด ์ ์ ํ ์์น์ ๋ํ๋๋๋ก ์กฐ์ ํ ์ ์์ต๋๋ค. ์์ ํ๋ฉด์์๋ ํ์ ์ด ํ๋ฉด์ ๋ฒ์ด๋์ง ์๋๋ก ํ๊ฑฐ๋, ํฐ ํ๋ฉด์์๋ ์ง์ ๋ ์์์ ๊ทผ์ฒ์ ์ ํํ๊ฒ ๋ฐฐ์นํ ์ ์์ต๋๋ค.
3. ๋ณต์กํ UI ์๊ตฌ์ฌํญ ์ถฉ์กฑ ๋ค์ํ UI ์๋๋ฆฌ์ค ๋์:
๋ณต์กํ UI์์๋ ํ์ ์ ์์น๋ฅผ ์ธ๋ฐํ๊ฒ ์ ์ดํด์ผ ํ ๋๊ฐ ๋ง์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ์์์ ๋ํด ์ปจํ ์คํธ ๋ฉ๋ด๋ฅผ ํ์ํ๊ฑฐ๋, ํผ ์ ๋ ฅ ์์ ์์ ์ค์๊ฐ ๋์๋ง์ ํ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ฐ ์ํฉ์์ anchorEl์ ํ์ ์์น๋ฅผ ์ ํํ๊ฒ ์ ์ดํ ์ ์๋ ์๋จ์ ์ ๊ณตํฉ๋๋ค.
anchorEl์ ์ฌ์ฉํจ์ผ๋ก์จ ํ์ ์ปดํฌ๋ํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ์์์ ์๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐํ๊ณ , ์ฌ์ฉ์์๊ฒ ๋ ์ง๊ด์ ์ด๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์ด ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์, anchorEl์ MUI์์ ํ์ ์ ์์น๋ฅผ ๊ฒฐ์ ํ๋ ์ค์ํ ์์ฑ์ผ๋ก์, ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๊ณ ๋ค์ํ UI ์๊ตฌ์ฌํญ์ ์ถฉ์กฑ์ํค๋ ๋ฐ ํฐ ๋์์ด ๋ฉ๋๋ค.