์ด ๊ธ์ react๊ฐ ๋ฆฌ๋๋๋ง๋๋ ์ํฉ ์ค props๊ฐ ์ ๋ฐ์ดํธ๋๋ ์ํฉ์ ๋ํด ๋ด๊ฐ ์ดํดํ ๋ฐ๋ฅผ ์ ๋ฆฌํ ๊ธ์ด๋ค.
React๊ฐ ๋ ๋๋ง๋๋ ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
- state๊ฐ ์ ๋ฐ์ดํธ ๋์์ ๋
- ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋์์ ๋
- porps๊ฐ ์ ๋ฐ์ดํธ ๋์์ ๋
์ด๋ฌํ ๊ฒฝ์ฐ ๋ฆฌ์กํธ๋ ๋ฆฌ๋ ๋๋งํ๋ค.
๊ทธ๋ฐ๋ฐ, 3๋ฒ์ ํด๋นํ๋ props๊ฐ ๋ณ๊ฒฝ๋์์ ๋๋ ๋ฌด์์ ์๋ฏธํ๋ ๊ฒ์ผ๊น?
๋ด๊ฐ ์๊ธฐ๋ก๋ props๋ immutable data๋ก read-only์ด๋ค. ๊ทธ๋ฐ๋ฐ, props๊ฐ ์ ๋ฐ์ดํธ๋๋ค๋?
์ด์ ๋ํ ํด๋ต์ ์๋์ ๊ฐ๋ค.
๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์ด๋ฒคํธ์ ๋ฐ์ ํน์ ํจ์์ ์คํ์ผ๋ก state๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ฆฌ๋๋๋ง์ด ๋ฐ์ํ๊ฒ ๋๋ค. ๊ทธ๋ ํ์ ์ปดํฌ๋ํธ์ ์๋ก์ด props๊ฐ์ ๋ด๋ ค์ฃผ๊ฒ ๋๋ค.
์๋ก์ด props๊ฐ์ ๋ฐ๊ฒ๋ ํ์ ์ปดํฌ๋ํธ๋ ์์ ์ ์ ๋๋๋ง ์ํฉ ์ค 3๋ฒ์ ํด๋น๋๊ธฐ ๋๋ฌธ์ ๋ฆฌ๋๋๋ง์ด ๋ฐ์ํ๊ฒ ๋๋ ๊ฒ์ด๋ค. ํ์ง๋ง ๋ฌธ์ ๋ ๊ฐ์ props๋ฅผ ๋ฐ๊ฒ๋๋๋ผ๋ ๋ฆฌ๋๋๋ง์ด ๋ฐ์ํ๋ค๋ ๊ฒ์ด๋ค.
์ด๋ฌํ ๋ฆฌ๋๋๋ง์ ๋น๋ฒํ ๋ฐ์์ ์ฑ๋ฅ์ ์ํฅ์ ์ฃผ๊ธฐ๋ ํ๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ณ ์ react.memo()๋ฅผ ํตํด ๋ถํ์ํ ๋๋๋ง์ ๋ง์์ฃผ๊ธฐ๋ ํ๋ค.
์ปดํผ๋ํธ๊ฐ React.memo()๋ก ๋ํ ๋ ๋, React๋ ์ปดํผ๋ํธ๋ฅผ ๋ ๋๋งํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ์ด์ง(Memoizing)ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ๋ ๋๋ง์ด ์ผ์ด๋ ๋ ๋์ผํ ์ฐธ์กฐ ๊ฐ์ prop์ด ๋ค์ด์จ๋ค๋ฉด, React๋ ๋ฉ๋ชจ์ด์ง(Memoizing)๋ ๋ด์ฉ์ ์ฌ์ฌ์ฉํ์ฌ ๋ฆฌ๋๋๋ง์ ๋ฐฉ์ง์ํจ๋ค.
App ์ปดํฌ๋ํธ
function App() { const [up, setUp] = useState(0); const upNum = () => { let num = up; setUp(num + 1); }; return ( <> <Home onUpClick={upNum} /> <About up={up} /> <Detail /> {/* <Detail up={up} /> */} {/* Deatil ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ์ง ์์๋, ์ด๋ ๊ฒ ์จ์ฃผ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ฆฌ๋ ๋๋ง์ ๋ฐ์์ํจ๋ค*/} </> ); } export default App;
Detail ์ปดํฌ๋ํธ
import React, { memo } from 'react'; const Detail = memo((props) => { console.log('detail render'); return <div>this is detail</div>; }); export default Detail;
์์ ์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด
About ์ปดํฌ๋ํธ์์ click์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด, up ์ํ๊ฐ 1์ฉ ์ปค์ง๋ฉด์ ์ํ๊ฐ ๋ณํํ๊ฒ ๋๋ค.
์ํ๊ฐ ๋ณ๊ฒฝ๋์ด ๋ฆฌ๋๋๋ง์ด ๋ฐ์ํ๋ค.
Detail ์ปดํฌ๋ํธ๋ memo๋ก ๊ฐ์ธ์คฌ๊ณ , ๋ณ๊ฒฝ๋๋ state๋ prop์ด ์๊ธฐ ๋๋ฌธ์, ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํ์ง ์๋๋ค.
๊ทธ ๊ฒฐ๊ณผ, console์๋ 'detail render'์ด ํ๋ฒ๋ง ์ฐํ๊ณ , ์ดํ์๋ ์ฐํ์ง ์๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
๋ฆฌ๋ ๋๋ง์ ์ํฉ ์ค props๊ฐ ๋ณ๊ฒฝ๋๋ค๋ ๊ฒ์ ๋ถ๋ชจ ์ปดํฌ๋ํธ์ state๊ฐ ๋ฐ๋์ด ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํ๊ณ , ํ์ ์ปดํฌ๋ํธ์ props๊ฐ ์ ๋ฐ์ดํธ๋์ด, ํ์ ์ปดํฌ๋ํธ๋ ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
ํ์ง๋ง, react.memo() ๋ฑ์ ํตํด ๋ถํ์ํ ๋ ๋๋ง์ ๋ง์, ์ฑ๋ฅ์ ๊ฐ์ ์ํฌ ์ ์๋ ๊ฒ์ด๋ค.