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)
2)
3)
4)
ํ ์คํธ ์๋ฃ!, ์ด์ ํ๋ก์ ํธ์ ์ ์ ์ฉํ ์ผ๋ง ๋จ์๋ค.
ํ๊ณ ๐ต
๋ฐ๊ฟ ์ ์๋ ๊ฒ์ ๋ฐ์๋ค์ด๋ ํ์จํจ์, ๋ฐ๊ฟ ์ ์๋ ๊ฒ์ ๋ฐ๊พธ๋ ์ฉ๊ธฐ๋ฅผ, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ฐจ์ด๋ฅผ ๋ถ๋ณํ๋ ์งํ๋ฅผ ์ฃผ์ต์์.
-๋ผ์ธํ๋ ๋๋ถ์ด, ํ์จ์ ๋น๋ ๊ธฐ๋ ไธญ