๋ฉ๋ชจ์ด์ ์ด์ (memoization) ์ด๋?โญ
- ํ๋ก๊ทธ๋๋ฐ์์ ๋ฐ๋ณต๋๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ ํด๋๊ณ ๋ค์์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ๋ ๋ค์ ๊ณ์ฐํ ํ์์์ด ๋นจ๋ฆฌ ์คํ ํ๋ ๊ธฐ๋ฒ์ด๋ค.
- JavaScript์์๋ ํด๋ก์ ๋ฅผ ํตํด ๊ณ์ ์ ์ง๋๋ ์ ์ฅ๊ณต๊ฐ์ ๋ง๋ค ์ ์๋ค.
- ๋ hooks ๋ ๋ฉ๋ชจ์ด์ ์ด์ ์ ์ด์ฉํ ๋ฐฉ๋ฒ์ผ๋ก ๋ถํ์ํ ๋ ๋๋ง์ ๋ง์ ์ ์์ผ๋, ์ฌ์ฉ ์์ฒด๋ก๋ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ๋์ด ์ฑ์์ง๋ฏ๋ก ์ฌ์ฉํ๊ธฐ ์ ์ ์คํ ์๊ฐ ํด ๋ด์ผํ๋ค.
useMemo ์ฌ์ฉ๋ฒ ๐
const memo = useMemo(() => {
return blabla;
},[list])
- useMemo๋ ์ฒซ๋ฒ์งธ ์ธ์๋ก ์ฝ๋ฐฑ ํจ์๋ฅผ ๋๋ฒ์งธ ์ธ์๋ก ์์กด์ฑ(dependency) ๋ฐฐ์ด์ ๋ฐ๋๋ค.
- useMemo๋ list๊ฐ ๋ณํ๋ค๋ฉด ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ๊ณ blabla๋ฅผ ๋ฆฌํดํ๊ฒ ๋๋ค.
- useMemo๋ ์ฃผ๋ก Value๊ฐ์ ๋ฐ์ดํฐ ๊ฐ์ ๋ฉ๋ชจ์ด์ ์ด์ ํ ๋ ์ฌ์ฉํ๋ค.
useCallback ์ฌ์ฉ๋ฒ ๐
// ์ปดํฌ๋ํธ ๋ด์ ํจ์๋ฅผ ์ ์ธ ์ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋ ๋๋ง๋ค ์๋ก์ด ํจ์ ์์ฑ
const add = () => x + y;
// useCallback์ ์ด์ฉํ๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋๋๋ผ๋ ์์กด์ฑ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋ ํ ๊ธฐ์กด ํจ์๋ฅผ ๋ฐํ
const add = useCallback(() => x + y, [x, y]);
- useCallback์ ์ฒซ๋ฒ์งธ ์ธ์๋ก ์ฝ๋ฐฑ ํจ์๋ฅผ ๋๋ฒ์งธ ์ธ์๋ก ์์กด์ฑ(dependency) ๋ฐฐ์ด์ ๋ฐ๋๋ค.
- useCallback์ ํจ์๋ฅผ ๋ฉ๋ชจ์ด์ ์ด์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ hook ์ด๋ค.
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] ์ฌ๊ท ์ปดํฌ๋ํธ (1) | 2023.10.15 |
---|---|
[React] debounce (feat. lodash) (0) | 2023.01.24 |
[React]useState (0) | 2022.11.16 |
[React]useLocation (0) | 2022.11.02 |
[React]CustomHook (์ฌํ์ฉ์ฑ form๋ง๋ค๊ธฐ) (0) | 2022.08.19 |