React

[TIL/React] 2023/08/29

1\. ver2 ๐ŸŸขlayout์˜ ํ๋ฆ„์„ ๋†“์นœ ๊ฒฐ๊ณผ๋Š” ์ฒ˜์ฐธํ•˜๋‹ค. ๊ดœ์ฐฎ๋‹ค ์ˆ˜์ •ํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ. ์ฐจ๋ถ„ํžˆ ๊ณ ๋ฏผ์„ ๋…น์—ฌ๋‚ผ ver2 ํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ๋‹ค.์ตœ์ƒ๋‹จ App.js์—์„œ๋Š” ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋“ค์„, PageContainer๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐ์‹ธ๊ณ  ์žˆ๋‹ค.PageCont

2023๋…„ 8์›” 29์ผ2min read

1. ver2 ๐ŸŸข

layout์˜ ํ๋ฆ„์„ ๋†“์นœ ๊ฒฐ๊ณผ๋Š” ์ฒ˜์ฐธํ•˜๋‹ค. ๊ดœ์ฐฎ๋‹ค ์ˆ˜์ •ํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ. ์ฐจ๋ถ„ํžˆ ๊ณ ๋ฏผ์„ ๋…น์—ฌ๋‚ผ ver2 ํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ๋‹ค.

์ตœ์ƒ๋‹จ App.js์—์„œ๋Š” ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋“ค์„, PageContainer๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐ์‹ธ๊ณ  ์žˆ๋‹ค.

PageContainer๋กœ ๊ฐ์‹ธ์ง„ ๋ชจ๋“  ํŽ˜์ด์ง€๋“ค์€, ํ—ค๋”์™€ ํ‘ธํ„ฐ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. PageContainer์˜ ํ•ต์‹ฌ์€ content์— ์žˆ๋Š”๋ฐ, ์ตœ์†Œ ๋†’์ด์™€ ๋„“์ด๋ฅผ ๋ทฐํฌํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค์ •ํ•˜๊ณ  'flex-grow: 1' ์„ ์ ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

1) 100vh์™€ 100%๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด์— ๋Œ€ํ•˜์—ฌ...

๊ฐ€์žฅ ๋จผ์ € ์†์„ ๋ณธ ๊ณณ์€ ComponentWrapper๋ฅผ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์— ๋Œ์–ด์™€ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์ด์—ˆ๋‹ค. ๊ธฐ์กด์—๋Š” ์ธ๋ผ์ธ ๋ถ€๋ถ„์— 'minHeight: 100vh'๊ฐ€ ์•„๋‹ˆ๋ผ 'height: 100%'๊ฐ€ ์ ์šฉ๋˜๊ณ  ์žˆ์—ˆ๋‹ค. ๊ฐ€์žฅ ๋ฐ”๊นฅ wrapper์ธ PageContainer์—์„œ ์ตœ์†Œ ๋†’์ด๋ฅผ 100vh๋กœ ์„ค์ •ํ–ˆ์œผ๋‹ˆ, ๊ทธ๋Œ€๋กœ ํ•˜์œ„ wrapper์—์„œ๋Š” 100%๋ฅผ ์ ์šฉํ•˜๋ฉด ๋˜์ง€ ์•Š๊ฒ ๋ƒ๋Š” ๋…ผ๋ฆฌ์˜€๋‹ค.

ํ•˜์ง€๋งŒ 'height: 100%'๋ฅผ ์ ์šฉํ•˜๋ฉด '์ปจํ…์ธ ์˜ ๋†’์ด์— ๋Œ€ํ•œ 100%'๋ฅผ ์ฐจ์ง€ํ•˜๊ฒŒ ๋˜์–ด์„œ, ๊ฒฐ๊ณผ์ ์œผ๋กœ PageContainer์˜ ์ ˆ๋ฐ˜์ •๋„๋ฅผ ์ฐจ์ง€ํ•˜๊ฒŒ ๋œ๋‹ค. 'minHeight: 100vh'๋ฅผ ์ธ๋ผ์ธ์— ์ถ”๊ฐ€ํ•ด์„œ ๋ทฐํฌํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์šด๋ฐ์— ์œ„์น˜ํ•˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค.

โœŽ ํ•œ๋งˆ๋””๋กœ page container ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ wrapper๋Š” ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋งŒํผ ๋ณ„๋„๋กœ height๋ฅผ ์„ค์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

2) input์ด wrapper ๋ฐ”๊นฅ์œผ๋กœ ํŠ€์–ด๋‚˜์˜ค๋Š” ๊ฑด์— ๋Œ€ํ•˜์—ฌ...

input๊ณผ button์€ ๋ชจ๋‘ form ํƒœ๊ทธ ๋‚ด๋ถ€์— ์œ„์น˜ํ•ด ์žˆ๋‹ค. ๊ณ ๋กœ width์™€ padding์„ ๋˜‘๊ฐ™์ด ์ ์šฉํ•˜๋ฉด, ์›ํ•˜๋Š”๋Œ€๋กœ ๋™์ผํ•œ ํฌ๊ธฐ์˜ input๊ณผ button์ด ๊ทธ๋ ค์ง€์ง€ ์•Š๊ฒ ๋ƒ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด 'box-sizing: border-box'๋ฅผ ํ†ตํ•ด input๊ณผ button์˜ ๊ทœ๊ฒฉ์„ ๋งž์ท„๋‹ค.

1. ์ˆ˜์ •๋œ ๋ชจ์Šต ๐ŸŸข

2. validation ์ฒ˜๋ฆฌ ์—ฐ์Šต ๐ŸŸ 

validation์— ๊ด€ํ•œ ํŒŒ์ผ์—์„œ๋Š”, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋งŒ!์„ํ•˜๊ณ , ์—๋Ÿฌ์— ๊ด€ํ•œ ์ง์ ‘์ ์ธ ์ฒ˜๋ฆฌ๋Š” ํŽ˜์ด์ง€ ๋˜๋Š” ์ปดํฌ๋„ŒํŠธ์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์˜€๋‹ค.

isValidLogIn ํ•จ์ˆ˜๋Š” email ๋˜๋Š” password ์ค‘, ํ•œ ํ•„๋“œ๋งŒ ์•„๋ฌด ๊ฐ’์ด ์ž…๋ ฅ๋˜์ง€ ์•Š์•„๋„ false๋ฅผ returnํ•œ๋‹ค. ๋ชจ๋“  ํ•„๋“œ๊ฐ€ ๋‹ค ์ฑ„์›Œ์ง„ ๊ฒฝ์šฐ์— ํ•œํ•˜์—ฌ true๋ฅผ return ํ•œ๋‹ค.

index.js๋Š” TIL์„ ์ž‘์„ฑํ•˜๋ฉด์„œ ๋ณด๋‹ˆ๊นŒ ๊ตณ์ด ์™œ ๋”ฐ๋กœ ๋งŒ๋“ค์—ˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ์–ด์จŒ๋“  ๊ฐ๊ฐ์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํ•จ์ˆ˜๋“ค์„ validation์ด๋ผ๋Š” ์ƒ์ˆ˜์— ๋‹ด์•„์„œ exportํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์˜ ์ œ์ถœ ๋ฒ„ํŠผ์—์„œ ์ง์ ‘์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ๋‹ค. case๋Š” ๋‹ค์Œ ๋„ค ๊ฐ€์ง€๋‹ค.

1. email ํ•„๋“œ๊ฐ€ ๋น” -> ์ฝ˜์†”์€ true, alert ๋“ฑ์žฅ 2. password ํ•„๋“œ๊ฐ€ ๋น” -> ์ฝ˜์†”์€ true, alert ๋“ฑ์žฅ 3. email, password ํ•„๋“œ๊ฐ€ ๋ชจ๋‘ ๋น” -> ์ฝ˜์†”์€ true, alert ๋“ฑ์žฅ 4. email, password ํ•„๋“œ๊ฐ€ ๋ชจ๋‘ ์ฑ„์›Œ์ง -> ์ฝ˜์†” ์ž…๋ ฅ ์—†์Œ, ํ•ด๋‹น alert ๋“ฑ์žฅ ์•ˆ ํ•จ

1)

2)

3)

4)

ํ…Œ์ŠคํŠธ ์™„๋ฃŒ!, ์ด์ œ ํ”„๋กœ์ ํŠธ์— ์ž˜ ์ ์šฉํ•  ์ผ๋งŒ ๋‚จ์•˜๋‹ค.

ํšŒ๊ณ  ๐Ÿ”ต

๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋Š” ๊ฒƒ์€ ๋ฐ›์•„๋“ค์ด๋Š” ํ‰์˜จํ•จ์„, ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ฐ”๊พธ๋Š” ์šฉ๊ธฐ๋ฅผ, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ฐจ์ด๋ฅผ ๋ถ„๋ณ„ํ•˜๋Š” ์ง€ํ˜œ๋ฅผ ์ฃผ์˜ต์†Œ์„œ.

-๋ผ์ธํ™€๋“œ ๋‹ˆ๋ถ€์–ด, ํ‰์˜จ์„ ๋น„๋Š” ๊ธฐ๋„ ไธญ

More to read

Amazon VPC

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

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

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

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

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

Subnet

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

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