[TIL/React] 2023/10/06

원민관·2023λ…„ 10μ›” 6일
0

[TIL]

λͺ©λ‘ 보기
120/159

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κ°€ 꺼지도둝 ν•œλ‹€.

ν™”λ©΄ 🟒

profile
Write a little every day, without hope, without despair ✍️

0개의 λŒ“κΈ€