props๋โ
์ธ๋ถ, ์ฆ ๋ถ๋ชจ(์์) ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ ๋ฐ์ ๊ฐ์ ๋งํ๋๋ฐ ์ด๋ ํจ๋ถ๋ก ๋ณ๊ฒฝ๋ ์ ์๋ ์ฝ๊ธฐ ์ ์ฉ(read-only) ๊ฐ์ฒด์ด๋ค. ๋ง์ฝ props๊ฐ ์ฝ๊ธฐ ์ ์ฉ ๊ฐ์ฒด๊ฐ ์๋๋ผ๋ฉด props๋ฅผ ์ ๋ฌ๋ฐ์ ํ์ ์ปดํฌ๋ํธ ๋ด์์ props๋ฅผ ์ง์ ์์ ์ ์์ ์ปดํฌ๋ํธ ๊ฐ์ ์ํฅ์ ๋ฏธ์น ์ ์๊ณ ์ด๋ React์๋จ๋ฐฉํฅ, ํํฅ์ ๋ฐ์ดํฐ ํ๋ฆ ์์น
์ ์๋ฐฐ๋๋ฏ๋ก ์ฝ๊ธฐ ์ ์ฉ ๊ฐ์ฒด๋ก ์ฌ์ฉํ๋ค.
<tagname attribute={value} />
ํ์์ผ๋ก ์ ๋ฌ, ํ์ ์ปดํฌ๋ํธ์์ {props.attribute}
ํ์์ผ๋ก ์ ๋ฌ๋ฐ์<opening tag>value</closing tag>
ํ์์ผ๋ก ์ ๋ฌ, {props.children}
ํ์์ผ๋ก ์ ๋ฌ๋ฐ์state๋โ
์ด๋ฉด์ ๋ณํ ์ ์๋ ๊ฐ์ผ๋ก React์์๋ ์ปดํฌ๋ํธ ๋ด์์ ๋ณํ ์ ์๋ ๊ฐ์ ์๋ฏธํ๋ค.
import { useState } from "react";
const [state ์ ์ฅ ๋ณ์, state ๊ฐฑ์ ํจ์] = useState(์ํ ์ด๊ธฐ ๊ฐ)
onChange
์ด๋ฒคํธ๊ฐ ๋ฐ์โ๏ธState hook ์ฌ์ฉ ์ ์ฃผ์์ โ๏ธ
React ์ปดํฌ๋ํธ๋ state๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์๋กญ๊ฒ ํธ์ถ๋์ด ๋ฆฌ๋ ๋๋ง ๋๋๋ฐ React state๋ ์ํ ๋ณ๊ฒฝ ํจ์ ํธ์ถ๋ก ๋ณ๊ฒฝํด์ผ ํ๋ค. state๋ฅผ ๊ฐ์ ๋ก ๋ณ๊ฒฝ ์๋ํ ๊ฒฝ์ฐ ๋ฆฌ๋ ๋๋ง ์คํจ๋ state ๋ณ๊ฒฝ ์คํจ๋ก ์ด์ด์ง๋ค๋ ์ ์ ๋ช ์ฌํ์.
React์ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐฉ์์ ์์๋ณด์๐
- React์ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐฉ์์ DOM๊ณผ ์ ์ฌํ๋ ๋ฌธ๋ฒ์์ ์ฝ๊ฐ์ ์ฐจ์ด๊ฐ ์๋ค.
- React์์ ์ด๋ฒคํธ๋ ์๋ฌธ์ ๋์ ์นด๋ฉ ์ผ์ด์ค(camelCase)๋ฅผ ์ฌ์ฉ
- JSX๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ด ์๋ ํจ์๋ก ์ด๋ฒคํธ ์ฒ๋ฆฌ ํจ์๋ฅผ ์ ๋ฌ
<input>
, <textarea>
, <select>
๋ฑonChange
์ด๋ฒคํธ ๋ฐ์ ์ e.target.value
๋ฅผ ํตํด ์ด๋ฒคํธ ๊ฐ์ฒด์ ๋ด๊ฒจ์๋ input ๊ฐ์ ์ฝ์ด์ดonClick
์ด๋ฒคํธ์ ํจ์ ํธ์ถ์ ๋ฃ์ด์ฃผ๋ ๊ฒฝ์ฐ ์ปดํฌ๋ํธ ๋ ๋๋ง ์ ํจ์ ํธ์ถ ๊ฒฐ๊ณผ๊ฐ onClick
์ ์ ์ฉ๋๋ฏ๋ก onClick
์ด๋ฒคํธ ํจ์ ์ ๋ฌ ์ ํจ์ ์์ฒด๋ฅผ ์ ๋ฌํด์ผ ํ๊ณ ์ด ๋ arrow function์ ์ฌ์ฉํด์ผ ํด๋น ์ปดํฌ๋ํธ๊ฐ ๊ฐ์ง state์ ํจ์๋ค์ด ์ ๊ทผ ๊ฐ๋ฅํจReact ๊ฐ๋ฐ ๋ฐฉ์โ
React ๊ฐ๋ฐ ๋ฐฉ์์ ๊ฐ์ฅ ํฐ ํน์ง์ ํ์ด์ง ๋จ์๊ฐ ์๋ ์ปดํฌ๋ํธ ๋จ์๋ก ์์ํ๋ค๋ ์ ์ธ๋ฐ ์ด๋ ๋ฏ ์ปดํฌ๋ํธ๋ฅผ ๋จผ์ ๋ง๋ค๊ณ ์ด๋ฅผ ์กฐ๋ฆฝํ๋ ์ํฅ์ ๋ฐฉ๋ฒ์ผ๋ก ์ฑ์ ๋ง๋ ๋ค. ์ปดํฌ๋ํธ ๋จ์๋ก ๊ฐ๋ฐ์ ํ ๊ฒฝ์ฐ ํ ์คํธ๊ฐ ์ฝ๊ณ ํ์ฅ์ฑ์ด ์ข๋ค๋ ์ฅ์ ์ ๊ฐ์ง๋ค. ์ปดํฌ๋ํธ๋ฅผ ๋์์ธ ํ ๋๋ ํ๋์ ์ปดํฌ๋ํธ์ ํ ๊ฐ์ง ์ผ๋ง ํ๋ค๋ผ๋ ๋จ์ผ ์ฑ ์ ์์น์ ๋ฐ๋ผ์ผ ํ๋ค.
props
๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ๋ง์น ์ธ์(arguments)๋ ์์ฑ(attribute)์ฒ๋ผ ์ ๋ฌ๋ฐ์ ์ ์์1๏ธโฃ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์ํ ๋ฐ์ดํฐ ์ ์
props
๋ฅผ ํตํด ์ ๋ฌ๋๋คstate
๋ props
๋ฅผ ๊ฐ์ง๊ณ ๊ณ์ฐ์ด ๊ฐ๋ฅํ๋ค2๏ธโฃ ์ํ ์์น ์ ํ๊ธฐ
state
์ ์ ๊ทผํ๊ณ ์ ํ ๋ ๊ณตํต ๋ถ๋ชจ ์ปดํฌ๋ํธ์ state๋ฅผ ์์น์์ผ์ผ ํจ<์ค๋์ ์ผ๊ธฐ>
React ์ฌ๋ฏธ์๊ณ ํ ๋งํ๋ค ์๊ฐํ๋ ํ๋ฃจ ์ ์ ๋.. ๊ณผ์ ํ๋ฉด์ ์ธ ๋ปํ ์๊ฐ์ด ํ ๋๋ฒ์ด ์๋์๋ค...ใ ํ์ด๋ถ์ด ์์๋ค๋ฉด ์์ง๊น์ง ๋ฐฉํฅ์กฐ์ฐจ ํค๋งค๊ณ ์์์ ๋์ ๋ชจ์ต์ด ๋ถ๋ช ํ๋ฐ ๋คํํ๋ ๋๋ฌด๋๋ฌด ์ข์ ํ์ด๋ถ์ ๋ง๋ ๋์์ ๋ง์ด ๋ฐ๊ณ ์ด๋ ์ ๋์ ๋ฐฉํฅ์ ์ก์ ์ ์์๋ค.
๋ฆฌ์กํธ์ props์ state๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ์ด๋ ๊ฒ ์ด๋ ต๊ฒ ๋๊ปด์ง๋ค๋.. ํ์คํ๊ฒ ๊ณต๋ถํ์ง ๋ชปํ ๊ฒ์ ๋ง์ด ๋ฐ์ฑํด์ผ๊ฒ ๋ค. ๋ ์ด์ฌํ ๋์ ํด์ ๊ผญ ๋๊น์ง ์ฑ๊ณต์์ผ๋ด์ผ๊ฒ ๋ค..
๋ฌผ๋ก ๋ค๋ฅธ ์ ๋์์ ๋ง๋ฌ๋ ํ์ด๋ถ๋ค๋ ๋ฐฐ์ธ ์ ์ด ๋ง๊ณ ์ ๋ง ์ข์ ๋ถ๋ค์ด์์ง๋ง ์ด๋ฒ ์ ๋์์ ํนํ ์ ๋ง ์ฒ์ฌ๊ฐ์ ํ์ด๋ถ์ ๋ง๋๊ฒ ๋ ๊ฒ์ ๊ฐ์ฌํ ์ ๋(?)์ด์๋ค.