[TIL/React] 2023/08/29

์›๋ฏผ๊ด€ยท2023๋…„ 8์›” 29์ผ
0

[TIL]

๋ชฉ๋ก ๋ณด๊ธฐ
104/159

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)

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

ํšŒ๊ณ  ๐Ÿ”ต

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

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

profile
Write a little every day, without hope, without despair โœ๏ธ

0๊ฐœ์˜ ๋Œ“๊ธ€