React

[TIL/React] 2023/10/06

Dropdown Box ๐ŸŸข App.js์—์„œ๋Š” 'Dropdown Example'์ด๋ผ๋Š” ์ œ๋ชฉ๊ณผ, Dropdown ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•œ๋‹ค. ๋™์‹œ์— options๋ผ๋Š” ๋ฐฐ์—ด์ด ์ƒ๋‹จ์— ์„ ์–ธ๋˜์–ด ์žˆ๋Š”๋ฐ, ์ด๋ฅผ Dropdown ์ปดํฌ๋„ŒํŠธ์— props๋กœ ์ „๋‹ฌํ•˜๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. Dropdown.js์—์„œ๋Š” ์œ„ ๋‚ด์šฉ์„ returnํ•œ๋‹ค. 1) Dropdown But...

2023๋…„ 10์›” 6์ผ1min read

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๊ฐ€ ๊บผ์ง€๋„๋ก ํ•œ๋‹ค.

ํ™”๋ฉด ๐ŸŸข

More to read

Amazon VPC

Amazon VPC Architecture ์ดํ•ดํ•˜๊ธฐ

์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธฐํšํ•˜๋ฉฐ, ๊ฐœ๋ฐœ์—์„œ ๋ฌด์—‡์„ ๊ฐ€์žฅ ๋จผ์ € ๊ณ ๋ฏผํ•ด์•ผ ํ•˜๋Š”์ง€ ๋‹ค์‹œ ๋Œ์•„๋ณด๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.ํ•œ๋•Œ๋Š” ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ๋ชจ๋“  ์„ค๊ณ„์˜ ์ถœ๋ฐœ์ ์ด๋ผ๊ณ  ๋ฏฟ์—ˆ์Šต๋‹ˆ๋‹ค. ์œ ์ €๊ฐ€ ๋ฌด์—‡์„ ๋ณด๊ณ , ์–ด๋–ค ํ๋ฆ„์—์„œ ๋จธ๋ฌด๋ฅด๊ณ  ์ดํƒˆํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ดํ•ด ์—†์ด ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๊ฑด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ

'์›์‚ฌ์ดํŠธ'

ํ”„๋ก ํŠธ์—”๋“œ ๊ด€์ ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ดํ•ดํ•˜๊ธฐ

์˜ค๋žœ๋งŒ์— ๋ฐฉ๋ฒ•๋ก ์— ๊ด€ํ•œ ๊ธ€์„ ์“ฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ ์ƒํ™ฉ์€ ์ด๋ ‡์Šต๋‹ˆ๋‹ค. SSAFY์—์„œ๋Š” ํ•˜๋ฃจ์— ์—„์ฒญ๋‚œ ์–‘์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋“ค์„ ๊ณผ์ œ๋กœ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ, '๊ตฌํ˜„๋ ฅ'์ด ๋งค์šฐ ๋–จ์–ด์ง„๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์™„์ „ํžˆ ์–ด๋ ค์šด ๋ฌธ์ œ๋ผ๋ฉด '์•„์‰ฌ์›€'์ด๋ผ๋Š” ๊ฐ์ •์กฐ์ฐจ ๋А๋ผ์ง€

Subnet

VPC ์„ค๊ณ„์˜ ์‹œ์ž‘: IP์™€ Subnet

๋ฐ˜๋ณต๋˜๋Š” ๋ฃจํ‹ด ์†์—์„œ ์–ป์€ ์•ˆ์ •๊ฐ์„ ๋ฐœํŒ ์‚ผ์•„, ์ด์ œ๋Š” ๊ธฐ์ˆ ์  ์ŠคํŽ™ํŠธ๋Ÿผ์„ ๋„“ํžˆ๊ธฐ ์œ„ํ•œ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์— ์ฐฉ์ˆ˜ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ๋Š” ๋‹จ์ˆœํ•œ ํฌํŠธํด๋ฆฌ์˜ค ๊ตฌ์ถ•์„ ๋„˜์–ด, ์‹ค์ œ ์„œ๋น„์Šค ์ˆ˜์ค€์˜ ๋ธ”๋กœ๊ทธ ์‹œ์Šคํ…œ ๊ตฌํ˜„๊ณผ ๋‹ค๊ตญ์–ด ์ฒ˜๋ฆฌ ์ ์šฉ ๋“ฑ ์‹ค๋ฌด์— ๊ฐ€๊นŒ์šด ์—ญ๋Ÿ‰์„ ํ•œ ๋‹จ๊ณ„