Dropdown Box ๐ข

App.js์์๋ 'Dropdown Example'์ด๋ผ๋ ์ ๋ชฉ๊ณผ, Dropdown ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋ค. ๋์์ options๋ผ๋ ๋ฐฐ์ด์ด ์๋จ์ ์ ์ธ๋์ด ์๋๋ฐ, ์ด๋ฅผ Dropdown ์ปดํฌ๋ํธ์ props๋ก ์ ๋ฌํ๊ณ ์์์ ํ์ธํ ์ ์๋ค.

Dropdown.js์์๋ ์ ๋ด์ฉ์ returnํ๋ค.
1) Dropdown Button


Dropdown Button์์๋ selectedOption์ด๋ผ๋ ์ํ, ์ฆ options ๋ฐฐ์ด์ ํน์ ์์๋ฅผ ๋ฒํผ์ ํํ๋ก ๋ณด์ฌ์ค๋ค. ๋จ ||(๋๋)์ฐ์ฐ์๋ฅผ ํตํด ์ ํ๋ option์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์๋ "Select an option"์ด๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ๋ณด์ฌ์ค๋ค.
๋์์ onClick์ setIsOpen์ด๋ผ๋ ์ํ ์ ๋ฐ์ดํธ ํจ์๊ฐ ์ฐ๊ฒฐ๋์ด ์๋ค. isOpen์ด๋ผ๋ ์ํ๋ฅผ true ๋๋ false๋ก ๋ณํํ์ฌ ํ์ ์์์ ๋ ๋๋ง์ ์กฐ์ํ๋ ์ญํ ์ ํ๋ค.
2) Dropdown List

Dropdown List๋ isOpen์ด๋ผ๋ ์ํ์ ์ํด ํต์ ๋๋ค. Dropdown Button์ ํด๋ฆญํด์ isOpen์ด true๋ก ๋ณ๊ฒฝ๋๋ฉด, styled component์ ์ ์ธ๋ ๋๋ก, ํ์ ์์(=Item)์ block ๋จ์๋ก ๋ณด์ฌ์ค๋ค. ๋ง์ฝ false๋ผ๋ฉด none์ ์ํด ์๋ฌด ์์๋ ๋ณด์ด์ง ์์ ๊ฒ์ด๋ค.
3) Dropdown Item


isOpen์ด true์ด๋ฉด block ๋จ์๋ก ๋ณด์ฌ์ง๋ Item์ด ๋ฐ๋ก ์ ์ฝ๋์ด๋ค. ๋ฐฐ์ด์ ์์์ ๋ง๋ ๋ด์ฉ์ ๋ ๋๋งํ๋ค.
handleOptionClick ํจ์๊ฐ ์ฐ๊ฒฐ๋์ด ์๋๋ฐ, ๋ฐฐ์ด์ ์์ ์ค ์ผ๋ถ๋ฅผ ์ธ์๋ก ๋ฐ์์ ๋ฒํผ์ ๋ณด์ฌ์ง selectedOption์ ์ํ๋ฅผ ์ต์ ํํ๋ค. ์ถ๊ฐ์ ์ผ๋ก setIsOpenํจ์์ false๋ฅผ ์ ๋ฌํ์ฌ, ์ต์ ์ ํ ํ Dropdown List๊ฐ ๊บผ์ง๋๋ก ํ๋ค.
ํ๋ฉด ๐ข


