Component์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์์ผ๋ก ๋๊ฒจ์ค ์ ์๋ ๊ฐ์ ๋ณ์, ํจ์, ๊ฐ์ฒด, ๋ฐฐ์ด ๋ฑ JavaScript์ ์์๋ผ๋ฉด ์ ํ์ด ์๋ค. (์ปดํฌ๋ํธ๋ก ์ ๋ฌ๋๋ ๋งค๊ฐ๋ณ์)
์ฃผ๋ก Component์ โ์ฌ์ฌ์ฉโ์ ์ํ์ฌ ์ฌ์ฉํ๋ค
Key
1) React๊ฐ ์ด๋ค ํญ๋ชฉ์ ๋ณ๊ฒฝ, ์ถ๊ฐ ๋๋ ์ญ์ ํ ์ง
์๋ณํ๋ ๊ฒ์ ๋๋๋ค.
2) ์๋ฆฌ๋จผํธ์ ์์ ์ ์ธ ๊ณ ์ ์ฑ์ ๋ถ์ฌํ๊ธฐ ์ํด ๋ฐฐ์ด ๋ด๋ถ์ Element์ ์ง์ ํด์ผ ํ๋ค.
3) Key๋ ๋ฐฐ์ด ์์์ ํ์ ์ฌ์ด์์ ๊ณ ์ ํด์ผ ํ๊ณ ์ ์ฒด๋ฒ์์์ ๊ณ ์ ํ ํ์๋ ์๋ค.
4) key ์์ฑ์ด ์์ผ๋ฉด ์ถ๋ ฅ์ ์ ์์ ์ผ๋ก ๋์ง๋ง ์ฝ์์ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ๋ค. React๊ฐ ๋ฐฐ์ด์ ์ํํ๋ฉฐ ์์ฑ๋ ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ๋ณํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
State๋ Component ๋ด์์ ์ ๋์ ์ผ๋ก ๋ณํ ์ ์๋ ๊ฐ์ ์ ์ฅํ๋ค.
const [count, setCount] = useState(0);
setCount(count + 1)
const [count, setCount] = useState(0);
setCount((current) => {
return current + 1
})
โโ Object๋ฅผ ๊ฐ๋ State๋ฅผ ๋ณ๊ฒฝํ ๋ ์ฃผ์ํ ์
const [user, setUser] = useState({name: "๋ฏผ์", grade: 1}) setUser((current) => { current.grade = 2; // ----> X return current; })user object ์์ grade๋ฅผ ๋ฐ๋ก ๋ณ๊ฒฝํ๊ฒ ๋๋ฉด grade๋ ๋ณ๊ฒฝ๋์์ง๋ง user ์์ฒด๋ ๋ณ๊ฒฝ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝ๋ ๊ฒ์ ๊ฐ์งํ์ง ๋ชปํ๋ค.
const [user, setUser] = useState({name: '๋ฏผ์', grade: 1 }) setUser((current) => { const newUser = { ...current } newUser.grade = 2 // ----> O return newUser })๊ธฐ์กด user์ ๋ด์ฉ์ ์๋ก์ด object์ ๋ด๊ณ grade๋ฅผ
๋ณ๊ฒฝํด์ผํ๋ค.
Props์ State์ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ก Props๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌํ๋ ๊ฐ์ผ๋ก ์์ ์ปดํฌ๋ํธ์์๋ Props๋ฅผ ์ง์ ์์ ํ ์ ์์ง๋ง State๋ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ์ ์ธํ๋ฉฐ ๋ด๋ถ์์ ๊ด๋ฆฌ๋๋ ๊ฐ์ผ๋ก ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค๋ ์ ์ด ์๋ค.
๋ฐ๋ผ์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ด์ผํ๋ ์ํฉ, ์๋ฅผ ๋ค๋ฉด ๋งค์ด ๋ณํ๋ ์๊ฐ์ ์ถ๋ ฅํด์ผ ํ๊ฑฐ๋ ๋ฒํผ ํด๋ฆญ์ ๊ฐ์ด ๋ณํ๋ ๊ฒ์ ์ถ๋ ฅํด์ผ ํ๋ค๋ฉด State๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. Props๋ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์์ ์ด ๋ถ๊ฐ๋ฅํ๊ณ , State๋ ์ํ๋ ๊ฒฝ์ฐ ์์ ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ํฉ์ ๋ฐ๋ผ ์๋ง์ ๊ฒ์ ์ฌ์ฉํ๋ฉด ๋๋ค.