1์ผ์ฐจ์ React์์ html, css๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์งค ์ ์๊ณ , tag ์ด๋ฆ์ ๋ช
ํํ ์ ์ ์์ด์ ์ฝ๋์ ์ ์ง๋ณด์์ฑ์ด ์ข์์ง๋ค๋ ๊ฒ์ ๋ฐฐ์ ๋ค.
ํ๋ก ํธ์๋์์ ๋ง์ด ์ฌ์ฉํ๋ ๋๊ตฌ๋ก๋ React
, Vue
, Angular
๊ฐ ์๋ค. Vue์ Angular๋ React์ฒ๋ผ ๋ถํ ์กฐ๋ฆฝ ๋ฐฉ์์์๋ ๋ถ๊ตฌํ๊ณ , ์ ํํ ๋ฆฌ์กํธ๋ฅผ ์จ์ผ ํ ๊น?
๋ฐ๋ก React ์ ์ ๊ฐ Vue๋ Angular ์ ์ ๋ณด๋ค ๋ง๊ธฐ ๋๋ฌธ์ด๋ค. ์ ์ ๊ฐ ๋ง๋ค๋ ๊ฑด ๋ฐฐ์ธ ์๋ฃ๋ ๋ง๊ณ , ์ง๋ฌธ๊ณผ ๊ฒ์์ด ์ฝ๋ค๋ ๊ฑธ ์๋ฏธํ๋ค.
React๋ฅผ ์ฌ์ฉํ๋ฉด ์น, ์ฑ, pc์ฑ์ ๋ชจ๋ ๋ง๋ค ์ ์๋ค. React๋ก ์ฑ์ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉํ๋ React-native
๋ React์ ๊ต์ฅํ ์ ์ฌํ๊ธฐ ๋๋ฌธ์ React๋ฅผ ๊ณต๋ถํ๋ฉด ๊ธ๋ฐฉ ๋ฐฐ์ธ ์ ์๋ค. ๋ํ Electron
์ ํ์ฉํ๋ฉด React๋ก ๋ง๋ ์น์ฌ์ดํธ๋ฅผ ๋ฐ์คํฌํ ํ๋ก๊ทธ๋จ์์ ์คํ๋๋๋ก ํ ์ ์๋ค.
๊ฒ๋ค๊ฐ React-native
๋ ํฌ๋ก์ค ํ๋ซํผ์ด์ด์ ์๋๋ก์ด๋ ์ ์ฉ ์ฑ๊ณผ, IOS ์ ์ฉ ์ฑ์ ํ๋ฒ์ ๋ง๋ค ์ ์๋ค.
React์์๋ ๋ถํ์ ํ๋ ๋ง๋ค์ด๋๊ณ ํ์ํ ๋๋ง๋ค ๊ฐ์ ธ์์ ์ฐ๋ ๋ฐฉ์์ ๋ง์ด ์ฌ์ฉํ๋ค. ์ฌ๊ธฐ์ ๋ถํ์ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ
๋ผ๊ณ ํ๋ค. UI ๋๋ ๊ธฐ๋ฅ์ ๋ถํํํด์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ๋๋ฌธ์ ์ฃผ๋ก ํฐ ์๋น์ค๋ฅผ ๋ง๋ค ๋, ์๊ฐ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํด์ ์ฝ๋ฉ์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ ๋ณต์ฌ&๋ถ์ฌ๋ฃ๊ธฐ์๋ ์ฐจ์ด๊ฐ ์๋ค. ํ๋๋ฅผ ๋ง๋ค์ด๋๊ณ ํ์ํ ๋๋ง๋ค ๊ฐ์ ธ๊ฐ์ ์ฐ๋ ๊ฒ์ ๊ฐ์ง๋ง, ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ import
๋ก ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ ธ๋ค ์ธ ์ ์๋ค. ์ปดํฌ๋ํธ์ ์ผ๋ถ๋ฅผ ํ๋๋ง ๋ฐ๊พธ๊ธฐ๋ง ํ๋ฉด, ๋๋จธ์ง์ ์ปดํฌ๋ํธ๋ ์๋์ผ๋ก ๋ฐ๋๊ธฐ ๋๋ฌธ์ ์ผ์ผ์ด ์์ ํ ํ์๊ฐ ์๋ค๋ ์ ์์ ๋ณต์ฌ&๋ถ์ฌ๋ฃ๊ธฐ์๋ ์ฐจ์ด๊ฐ ์๋ค.
์ปดํฌ๋ํธ์ ๊ธฐ์ค์ ๊ฐ๋ฐ์๊ฐ ์ค์ ํ๊ธฐ ๋๋ฆ์ด๋ค. ํ์ด์ง ํ๋๋ ๊ทธ ์์ฒด๋ก ํฐ ์ปดํฌ๋ํธ๊ฐ ๋ ์ ์๋ค(ํ์ด์ง ์ปดํฌ๋ํธ๋ผ ํจ).
ํด๋์คํ ์ปดํฌ๋ํธ
๋ ๋ณต์กํด์ ์ ์ฐ์ง ์๋ ์ถ์ธ๋ค. ํ์ง๋ง ํด๋์คํ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด๋๊ณ ์ ์งํ๊ฑฐ๋, ํด๋์คํ์ผ๋ก ๋ง๋ค์์ง๋ง ๋ถ๋ถ๋ถ๋ถ ํจ์ํ์ผ๋ก ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ๋ ์๊ธฐ ๋๋ฌธ์ ํด๋์คํ ์ปดํฌ๋ํธ๋ฅผ ์์๋์์ผ ํ๋ค.
import { Component } from "react";
class New extends Component {
render() {
return <div>์ด๊ฒ์ ํด๋์คํ ์ปดํฌ๋ํธ</div>
}
}
export default New
use๋ก ์์ํ๋ react-hook์ ํ์ด์ค๋ถ์์ ์ ๊ณตํ๊ธฐ ์์ํ๋ฉด์ ํจ์๋ฅผ ์ปดํฌ๋ํธ ํํ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค. ํจ์๋ฅผ ๋ง๋ค๊ณ ์์ export default
๋ฅผ ๋ถ์ฌ์ ๋ด๋ณด๋ด๋ ๋ฐฉ์์ด๋ค. ํด๋์คํ ์ปดํฌ๋ํธ์ ๋น๊ตํ๋ฉด ํจ์ฌ ๊ฐ๋จํ๋ค. ๋ฐ๋ผ์ ์ต๊ทผ ๋ง์ ๊ธฐ์
์์ ํจ์ํ ์ปดํฌ๋ํธ
๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๊ณ ์๋ค.
function New() {
return <div>์ด๊ฒ์ ํจ์ํ ์ปดํฌ๋ํธ</div>
}
export default New
ํจ์ํ ์ปดํฌ๋ํธ๋ ํ์ดํ ํจ์
๋ก๋ ํํ์ด ๊ฐ๋ฅํ๋ค.
const New = () => <div>์ด๊ฒ์ ํจ์ํ ์ปดํฌ๋ํธ</div>
export default New
ํจ์ํ ์ปดํฌ๋ํธ๊ฐ ํด๋์คํ ์ปดํฌ๋ํธ๋ณด๋ค ๊ฐ๋จํ๊ธด ํ์ง๋ง, ํด๋์คํ ์ปดํฌ๋ํธ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ํ๋ด๋ด์ง๋ ๋ชปํ๋ค. ๊ทธ๋์ React์์ ํจ์ํ ์ปดํฌ๋ํธ๋ ํด๋์คํ ์ปดํฌ๋ํธ์ฒ๋ผ ๊ธฐ๋ฅํ๋๋ก ํ๊ธฐ ์ํด Hooks(ํ
)
์ด๋ผ๋ ๋๊ตฌ๋ฅผ ๋ง๋ค์๋ค.
Hooks
๋ ๋ณ์๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๊ธฐ๋ฅ์ ํ๋ฉฐ, useState, useEffect ์ฒ๋ผ ์์ โuseโ๋ฅผ ๋ถ์ฌ์ ์ฌ์ฉํ๋ค.
state: ์ปดํฌ๋ํธ์์ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๋ณ์(state)
setState: ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ๋ ๋ณ์(state)๋ฅผ ๋ฐ๊ฟ์ฃผ๋ ๊ธฐ๋ฅ
useState: ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ๋ ๋ณ์(state)๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๊ธฐ๋ฅ
let count = 0; const count = 0;
const[count, setCount] = useState(0)
useState ์๊ดํธ ์์๋ ๋ณ์์ ๋ค์ด๊ฐ๋ ์ด๊ธฐ๊ฐ์ ์ค์ ํด์ค๋ค!
๋ค์์ผ๋ก๋ let, const์ state์ ๋ณ์๋ฅผ ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ์ ๋น๊ตํด๋ณด์.
const๋ ์ฌํ ๋น์ด ๋ถ๊ฐํ๋ฏ๋ก let๋ง ์ฌํ ๋น์ ํด์ค๋ค.
let count = 0; count = 5;
state๋ setCount
์ 5๋ฅผ ๋ฃ์ด์ฃผ๋ฉด, count์ 5๊ฐ ๋ค์ด๊ฐ๊ฒ ๋๋ค.
Const [count, setCount] = useState(0)
setCount(5)
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ก
ํด์ฃผ๋ฉด, ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ข ๋ ๋ํ
์ผํ๊ฒ ๊ฒ์ฆ(๋ณด์ ๋ฑ)
ํ๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ฐ๋ฆฌ๊ฐ ์
๋ ฅํ ๊ฐ๋ค์ state
์ ์ ์ฅ๋๊ณ , ๊ทธ ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋ ๊ฒ์ด๋ค.
์ค๋ฌด์์๋ ํ์๊ฐ์ , ๊ฒ์๋ฌผ์์ฑ ๋ด์ฉ ๋ฑ์ ์๋ฒ์ปดํจํฐ์ ์ ์กํ๊ธฐ ์ํด ๋ณ์์ ๋ด์๋ ๋ ํน์ ์์ฑํ ๋ด์ฉ์ ๊ฒ์ฆํ๊ณ ์๋ชป๋ ๋ถ๋ถ์ ๋ค๋ฅธ์์ผ๋ก ํ๊ธฐํ ๋ ์ฌ์ฉํ๋ค.