๋ฆฌ์กํธ ๋ง๊ณ ๋ ๋ค๋ฅธ ๋๊ตฌ๋ค์ด ๋ง์ด ์๋ค.
์์ํ ์๋ฐ์คํฌ๋ฆฝํธ๋ง ์ฐ๋ค๊ฐ ๊ทธ๊ฒ์ ํจ์จ์ ์ผ๋ก ๋์์ฃผ๋ ๋๊ตฌ์ธ jQuery๊ฐ ๋์๋ค. ํ์ง๋ง ์ ์ด์ฟผ๋ฆฌ ๋ํ ์ฑ๋ฅ์ด ๋๋ฆฌ๊ณ ๋นํจ์จ์ ์ธ ๋ถ๋ถ๋ค์ด ๋ง์์ Vue, React, Angular ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์ค๊ฒ ๋์๋ค.
๊ทธ๋ ์ง๋ง ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค ์ค์์๋ ์ ๋ฆฌ์กํธ๋ฅผ ์ธ๊น?
์ฐ์ ์ด์ฉ์๊ฐ ๊ฐ์ฅ ๋ง๋ค.
๋ค์์ npmtrends ์์ ์ด์ฉ์๋ฅผ ๋น๊ตํด๋์ ๊ทธ๋ํ์ด๋ค.
๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๊ณผ ์ด์ฉ์ ์๊ฐ 8๋ฐฐ ์ ๋๊ฐ ์ฐจ์ด๊ฐ ๋๋ค.
์ด๋ ๊ฒ ์ด์ฉ์๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ ์ปค๋ฎค๋ํฐ๊ฐ ์ ํ์ฑ๋์ด์์ด์ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ํด๊ฒฐํ๊ธฐ๋ ์ฝ๋ค.
์ธ๋ฒ์งธ ์ฅ์ ์ ๋ฆฌ์กํธ๋ฅผ ์ด์ฉํ๋ฉด ์น, ์ฑ(์๋๋ก์ด๋, IOS), pc์ฑ๊น์ง 4๊ฐ์ง์ ์๋น์ค๋ฅผ ๋ง๋ค ์ ์๋ค๋ ์ ์ด๋ค.
React-Native๋ผ๋ ๋ชจ๋ฐ์ผ ์ฑ์ ๋ง๋ค ์ ์๋ ํ๋ก๊ทธ๋จ์ด ์๋๋ฐ ์ด๋ ๋ฆฌ์กํธ์ 6-70%๊ฐ ๋น์ทํ ์ ๋๋ก ๊ณตํต์ ์ด ๋ง๋ค. ๋ํ React-Native๋ ํฌ๋ก์คํ๋ซํผ์ผ๋ก ์๋๋ก์ด๋, ios ๋ ๊ฐ์ ์๋น์ค๊ฐ ๋ชจ๋ ์ด์ฉ ๊ฐ๋ฅํ๋ค๋ ํฐ ์ฅ์ ์ด ์๋ค.
์ฌ๊ธฐ์ Electron์ ์ข๋ง ๋ ๋ฐฐ์์ React์ ๊ฐ์ด ์ด์ฉํ๋ค๋ฉด ๋
ธํธ๋ถ์์ ์ฌ์ฉํ๋ pc์ฑ๋ ๋ง๋ค ์ ์๋ค.์ฌ๊ธฐ์๋ ์ฃผ๋ React
์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ธฐ์กด์ ์ ์ด์ฟผ๋ฆฌ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ผ์ ๋์๋ ๋ค๋ฅด๊ฒ ์ ๋ฆฌ์กํธ, ์ฅ๊ทค๋ฌ, ๋ทฐ์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๋ช ํด์ง๊ฑธ๊น?
์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ํ๋์ ํ์ด์ง๋ฅผ ๊ทธ๋ฆฐ๋ค๊ณ ํ๋ฉด ์ ์ฒด์ ๊ทธ๋ฆผ์ ์ฒ์๋ถํฐ ๋๊น์ง ํ๋ ํ๋ ๋ค ๊ทธ๋ฆฌ๋ ๋ฐฉ์์ด๋ผ๊ณ ํ ์ ์๋ค. ํ์ง๋ง ๋ฆฌ์กํธ, ์ฅ๊ทค๋ฌ, ๋ทฐ๋ ํฐ ๋ํ์ง์ ๊ฐ๊ฐ์ ๋ถํ์ ๊ฐ์ ธ์์ ์กฐ๋ฆฝํ๋ ๋ฐฉ์์ด๋ค.์ด๋ ๊ฒ ๋ถํ์ด ๋ฐ๋ก ๋๋์ด์ ธ ์์ผ๋ฉด ๋ค๋ฅธ ๋ํ์ง์์๋ ์ฌ์ฌ์ฉํ ์ ์๋ค๋ ์ฅ์ ๋ ์๋ค. ๊ทธ๋์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ณด๋ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋์๋ค.
๊ทธ๋ ๋ค๋ฉด Component๋ ๋ฌด์์ผ๊น?
์ปดํฌ๋ํธ๋ UI ๋๋ ๊ธฐ๋ฅ์ ๋ถํํํด์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ฒ์ด๋ค.
ํ๋์ ๋ถํ๋ค์ ๋ฐ๋ก ๋ง๋ค์ด์ ์ด๊ฒ๋ค์ importํด์ ์ฌ์ฉํ๋ฉด ๋๋ค.
๊ต์ฅํ ํจ์จ์ ์ผ๋ก ๋ณํ๋ค.
์ด๊ฒ์ ๋ณต๋ถ๊ณผ๋ ์๋ฆฌ๊ฐ ๋ค๋ฅด๋ค.
๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํ๋ค๋ฉด ํ๋๋ฅผ ์์ ํ๋ ค๋ฉด ๋ค ๋ณ๊ฒฝํด์ผ ํ๋ค.
ํ์ง๋ง ํ๋์ ์๋ณธ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ณ ์ด๊ฒ์ import ํด์ฃผ๋ ๊ฒ์ผ๋ฏ๋ก ์๋ณธ๋ง ์์ ํ๋ฉด ๋ชจ๋ ๋ค ๋ณ๊ฒฝ๋์ด ๋งค์ฐ ํธ๋ฆฌํ๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฐ์ดํฐ๋ค๋ ๊ฐ์ด import ๋๋ ๊ฒ์ธ๊ฐ?
๊ทธ๊ฑด ์๋๋ค ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ด import ํ ์๋ ์์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก๋ UI์ ์ฌ์ฌ์ฉ์ ์๋ฏธํ๋ค.
ํ์ด์ง๋ ํ๋์ ํฐ ์ปดํฌ๋ํธ์ด๋ค.
์ปดํฌ๋ํธ๋ผ๋ ๊ฒ์ ์ฌ๋์ด ๋ง๋ค๊ธฐ์ ๋ฌ๋ผ์ง ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๋ฐฉ์์ ๋ฐฐ์๋ณด์.
์ปดํฌ๋ํธ๋ ํด๋์คํ๊ณผ ํจ์ํ ๋๊ฐ์ง๊ฐ ์๋ค.
์์ ํด๋์คํ๊ณผ ํจ์ํ ์ปดํฌ๋ํธ ์ด ๋๊ฐ์ ํ์ด์ง ์ปดํฌ๋ํธ๋ฅผ ๋น๊ตํด๋ณด์.
ํจ์ํ์ด ์์ค์ฝ๋ ๊ธธ์ด๊ฐ ํจ์ฌ ์งง๋ค. ๊ทธ๋์ ํจ์ํ ์ปดํฌ๋ํธ๊ฐ ๋ง๋ค์ด์ง๊ฒ ๋์๋ค๊ณ ๋ณผ ์ ์๋ค. ์ฌ์ง์ด ์ด ํจ์ํ ์ปดํฌ๋ํธ๋ฅผ ํ์ดํ ํจ์๋ก๋ ํํํ ์ ์๋๋ฐ ์ด๋ ๊ฒ ๋๋ฉด ๊ธธ์ด๊ฐ ํจ์ฌ ์งง์์ง๋ค.
์ด์ ๋ฆฌ์กํธ ์์ฒด์์๋ ํด๋์คํ์ ๋ ์ด์ ์
๋ฐ์ดํธ ํ์ง ์๊ฒ ๋ค๊ณ ํ๋ค. ํจ์ํ์์ ์ง์ํ๋ ๋ง์ ๊ธฐ๋ฅ๋ค์ ์ ์ ์ง์ํ์ง ์๊ณ ์๋ค.
ํ์ง๋ง ์์ ๋ถํฐ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํด์จ ํ์ฌ๋ค ๊ฐ์ ๊ฒฝ์ฐ๋ ํด๋์คํ์ ํจ์ํ์ผ๋ก ํ๋ฒ์ ๋ฐ๊พธ๊ธฐ๋ ์ด๋ ค์ธ ๊ฒ์ด๋ค. ๋ํ ํด๋์คํ๊ณผ ํจ์ํ, ๋๊ฐ๊ฐ ๊ณต์กด์ด ๊ฐ๋ฅํ๋ฏ๋ก ์ฐ๋ฆฌ๋ ํด๋์คํ ์ปดํฌ๋ํธ๋ ์์์ผํ๋ค. ํนํ ํด๋์คํ์์ ํจ์ํ์ผ๋ก ๋ฐ๊พธ๋ ๋ฐฉ์์ ๊ณต๋ถํด๋ณด๋ฉด ์ข๋ค.
ํด๋์คํ์ ๊ธธ๊ณ ๋ณต์กํ๋ฐ ๊ทธ๋ผ ์ฒ์๋ถํฐ ํจ์ํ์ ์ฌ์ฉํ๋ฉด ์ข์์ํ ๋ฐ ๋ผ๊ณ ์๊ฐํ ์ ์๋ค. ํ์ง๋ง ํจ์ํ ์ปดํฌ๋ํธ๋ผ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ง ๊ฒ์ ๋ฐ๋ก React-hooks๋ค ๋๋ถ์ด๋ค. ์ด๋ค์ด ๋์ค๊ณ ๋์๋ถํฐ ํจ์ํ ์ปดํฌ๋ํธ๊ฐ ๊ฐ๋ฅํด์ก๋ค.
state
-> ์ปดํฌ๋ํธ ์ ์ฉ ๋ณ์useState
-> state ๋ง๋ค์ด ์ฃผ๋ ์ const [state, setState] = useState('์ฒ ์')
const [๋ณ์๋ช
, ๋ณ์๋ฐ๊พธ๋ ํจ์] = useState(์ด๊ธฐ๊ฐ)
์๋ฅผ๋ค์ด ์ด๋ ๊ฒ ๋ง๋ค ์ ์๋ค.
const [count, setCount] = useState(0)
๋ณ์๋ช
, ๋ณ์๋ฐ๊ฟ์ฃผ๋ ํจ์๋ ์ฐ๋ฆฌ ๋ง์๋๋ก ์ด๋ฆ์ ์ง์ ์ ์๋ค.
์ฌ๊ธฐ์ setCount(5)๋ฅผ ํ๋ฉด count๊ฐ 5๊ฐ ๋๋ค.
let
์ด๋ const
๋ ๋ชป์ฐ๋ ๊ฑธ๊น?
์๋ ๊ธฐ์กด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ๋ฐฉ์๊ณผ React์ State ๋ฐฉ์์ผ๋ก ์์ฑํ ์นด์ดํธ ์
ํ์ด์ง์ด๋ค.
๋ฆฌ์กํธ ํ
์ธ useState
๋ฅผ ์ด์ฉํ๋ฉด ์ด๋ ๊ฒ ์งง๊ณ ๊ฐ๋จํด์ง๋ค.
๋ณ์๋ {์ค๊ดํธ}
์์ ์ ๋ ๋ฐฉ์์ผ๋ก ๋ฐ๋ก ๋ถ๋ฌ์ฌ ์ ์๊ณ ๋ณํ๋ ๊ฐ์ด ํ๋ฉด์ ๋ฐ๋ก ๋ฐ์๋๋ค.
react์ ์๋์๋ฆฌ ๋๋ฌธ์ let ์ ํ๋ฉด์ ๋ฐ์์ด ๋์ง ์์์ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก react๋ฅผ ์ฌ์ฉํ๋ค๋ฉด useState๋ฅผ ํ์๋ก ์์์ผํ๋ค.
apple์ด ๋ฌด์์ธ์ง ์๊ธฐ ์ํด์ apple์ ๊ฐ์ธ๊ณ ์๋ ์ค๊ดํธ ์ค์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ๋ฅผ ์ฐพ๋๋ค. ์ด๋ ์ด ํจ์์ ๋ฒ์๋ฅผ ์ค์ฝํ (scope) ๋ผ๊ณ ํ๊ณ ๋ณ์(apple)๋ฅผ ์์์ ๋ฐ์ผ๋ก ์์๊ฐ๋ ๊ณผ์ ์ด ์ฒด์ธ์ฒ๋ผ ์ฎ์ฌ ์๋ค๊ณ ํด์ ์ค์ฝํ์ฒด์ธ (scope chain)์ด๋ผ๊ณ ํ๋ค.
์ฝ๋๋ฅผ ์ด๋ ๊ฒ ์ ๊ฒ ๋๋ฉด ์ค์ฝํ์ฒด์ธ์ ์ํด์ count๊ฐ 10์ด ์๋ 0์ด ๋๋ค.
์ด์ ์ด๊ฒ๋ค์ ์ด์ฉํด์ ๊ฐ๋จํ ํ์๊ฐ์ ์ฐฝ์ ๋ง๋ค์ด๋ณด์.
- event.target์ ์ด์ฉํ๋ฉด ์ด๋ฒคํธ๊ฐ ์ผ์ด๋๊ณ ์๋ ํ๊ทธ ์ ์ฒด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
- event.target.value๋ฅผ ์ ์ผ๋ฉด ์ฐ๋ฆฌ๊ฐ ์
๋ ฅํ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๊ฒ ๋๋ค.
์ด๊ฒ์ ์์ฉํ๋ฉด setEmail, setPassword ๋ฑ์ผ๋ก ์ฌ์ฉ์๊ฐ ์ง์ ์
๋ ฅํ๋ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ํ์๊ฐ์
๋ฒํผ์ ๋๋ ์ ๋ ์
๋ ฅ๋ฐ์ ๊ฐ์ ๋ฐ๋ผ ์๋ฌ๋ฅผ ๋์์ฃผ๋ ๊ฒ์ด๋ค.
๊ทธ ์๋ฌ ๋ด์ฉ ๋ํ useState๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
emailError๋ผ๋ ๋ณ์๋ฅผ ๋ง๋ค๊ณ ์
๋ ฅ๋ฐ์ ์ด๋ฉ์ผ์ด ์ด๋ฉ์ผ ํ์์ด ์๋ ๋ ๋ณ์๊ฐ์ ๋ฐ๊ฟ์ฃผ๋ ์กฐ๊ฑด์ ์ฃผ๋ฉด ๋๋ค. (์ด๋ฉ์ผ์ด ์๋ ๊ฒ์ '@'๊ฐ ์๋ค๋ ๊ฒ์ผ๋ก ์ผ๋จ ๋ง๋ค์ด ๋ณด์๋ค.)
error ๋ฌธ๊ตฌ๋ ๋ฒํผ์ ๋๋ ์ ๋ input ๋ฐ์ ๋จ๊ฒ ๋ง๋ค์ด ์ฃผ์๋ค.