728x90
๋ฐ์ํ
useCallback & useMemo ์ธ์ ์ฌ์ฉํด์ผ ๋ ๊น?
๋ ๊ฐ์ hook์ ๋ํด์ ๋ค์ ํ๋ฒ ๋ค๋ค๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋ hook์ ๋ฉ๋ชจ์ด์ ์ด์ ๋๋๊น ํจ์๋ ๊ฒฐ๊ณผ๊ฐ์ด ์๋ ๊ฑฐ์ ์ ๋ถ ์ฌ์ฉํ๋ฉด ์ข์ง ์์๊น??๋ผ๋ ์๊ฐ์ ํ ์ ์์ ๊ฒ์ ๋๋ค.
๊ทธ๋ฐ ์๊ฐ์ ์ฑ๋ฅ ์ข์์ง๊ฒ ์ง ํ๊ณ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ๋๋ ค ์ฑ๋ฅ์ ํ๊ฐ ๋ ์ ์์ต๋๋ค.
์๋๋ฉด ๊ฒฐ๊ตญ ๋ฉ๋ชจ์ด์ ์ด์ ํ๋๋ฐ์๋ ๊ทธ๋งํ ๋น์ฉ์ด ๋ค๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ ๊ธฐ์ ์ธ์ ์ฐ๊ณ , ์ธ์ ์ฐ๋ฉด์์ข์์ง์ ๋ํด ์์ฑํ๋ ค๊ณ ํฉ๋๋ค.
โ์ฌ์ฉํ์ง ๋ง์์ผ ํ๋ ๊ฒฝ์ฐ
- ๋ณต์กํ์ง ์์ ์ฐ์ฐ์ ์ฌ์ฉํ๋๊ฒ์ ์คํ๋ ค ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น์
๋๋ค.
onClick์ด๋ฒคํธ๋ก setStateํด์ฃผ๋ ๊ฒฝ์ฐ ๊ฐ์ด ๋จ์ํ ์ํฉ์ด๋ผ๋ฉด, ๋ฆฌ๋ ๋๋ง ๋๋ค๊ณ ํ๋๋ผ๊ณ ๋ค์ ๊ทธ๋ ค์ฃผ๋ ํธํ ํจ์ฌ ๋ซ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.
React์์๋ ์ถฉ๋ถํ ์ต์ ํ๊ฐ ์ด๋ฃจ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ useState๋ useDispatch์ ๋ํ ์ฑ๋ฅ ์ต์ ํ๋ ์ด๋ฏธ ์ ์ฉ๋์ด ์๋ค๊ณ ํฉ๋๋ค.
const onClick = useCallback((value) => setState(value), []);
- ์์กด์ฑ ๋ฐฐ์ด์ ์ ๊ฒฝ ์จ์ผ ๋ฉ๋๋ค.
useCallback์ด๋ useMemo ๋ด๋ถ์์ ์ฌ์ฉํ์ง ์๋ props๋ฅผ ์์กด์ฑ๋ถ์ฌํ๊ฒ ๋๋ฉด, ์ฌ์ฉํ๋ ์๋ฏธ๊ฐ ์์ด์ง๋ค. - ๋๋ฌด ์์ฃผ ๋ฐ๋๋ ๊ฐ์ ์์กด์ฑ์ ๋ถ์ฌํ ๋๋ ์ฌ์ฉํ์ง ๋ง์์ผ ํฉ๋๋ค.
์๋์ ์ผ๋ก ๋งค๋ฒ ์๋ก์ด ํจ์๋ ๊ฐ์ ๊ณ์ฐํด์ผ ํ๋ค๋ฉด ๊ตณ์ด ์ฌ์ฉํ ํ์ ์์ต๋๋ค. - ๋ฆฌ๋ ๋๋ง ๊ด๋ จ์ด ์๋ ์ปดํฌ๋ํธ๋ผ๋ฉด ๊ตณ์ด ์ฌ์ฉํ ํ์๊ฐ ์์ต๋๋ค.
๊ฒฐ๊ตญ ๋ฆฌ๋ ๋๋ง ํ ๋ ํจ์จ์ ์ผ๋ก ๋ ๋๋ง ํ๋ ค๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์..
๐์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ
- ์ฌ์ฉ๋ ํจ์ ๋ด์ฉ์ด ๋ณต์กํ๊ฑฐ๋ ๋ง์ ๊ฒฝ์ฐ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
- porps๋ก ํจ์๋ฅผ ๋๊ธธ ๋, ๋ถํ์ํ ๋ ๋๋ง์ด ์ผ์ด๋๋ค๊ณ ํ๋จ๋๋ฉด ์ฌ์ฉํฉ๋๋ค.
- ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ ๋, ๊ฒฐ๊ณผ๊ฐ์ ๋ณด๊ณ , ๋์ผํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ฉด useMemo๋ฅผ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
- ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ๋ฆฌ๋ ๋๋ง์ด ์ผ์ด๋ฌ์ ๋, ์์ ์ปดํฌ๋ํธ์ ์ผ์ด๋์ง ์์์ผ๋ฉด ํ ๋ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
์ต๋ํ ์ฑ๋ฅ ์ข๊ณ ํจ์จ์ ์ผ๋ก ์์ฑํ๋ ค๋ค๊ฐ ์คํ๋ ค ๋ ์ด ๋ ์ ์์ต๋๋ค.
ํด๋นํ๋ hook๋ค์ ์ฌ์ฉํ ๋, ์๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ช ํํ๊ฒ ํ๊ณ , ์๊ฐํ๋ค๋ฉด ๋ณด๋ค ๋์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ ๊ฒ์ ๋๋ค.
์ ๋ ์ ๋ชปํ๊ณ ์๋๋ฐ... ๋ค์ ํ๋ก์ ํธ ํ๊ฒ ๋๋ฉด ์ข ๋ ํจ์จ์ ์ผ๋ก ์ ์ง๋ด์ผ ๋ ๋ฏ์ถ์ต๋๋ค.
728x90
'Front-End > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React] Hook : CustomHook (0) | 2023.06.26 |
---|---|
React] Fragment <></> (0) | 2023.06.26 |
React] Hook : useContext ๋จ์ ํด๊ฒฐ (0) | 2023.06.26 |
React] Hook : useContext (0) | 2023.06.23 |
React] Hook : useState ๋น๋๊ธฐ โ ๋๊ธฐ ํ๋ ๋ฒ (0) | 2023.06.22 |