Memoization
์์ํ๋ฉฐ
React๋ฅผ ์ฃผ์ธ์ด๋ก ์ฌ์ฉํ๊ณ ์ ํ๋๋ฐ ์ด์ผ๊ธฐ๋ฅผ ๋๋๋ค๋ณด๋ Memoization์ ๊ฐ๋ ์ ๋ํด ์ ๋ชจ๋ฅด๊ณ ์๋ ๊ฒ ๊ฐ์ ์ ๋ฆฌํด๋ด ๋๋ค.
Memoization
- ์ด์ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅํด๋๊ณ ๋์ผํ ์ ๋ ฅ์ด ๋ค์ด์ค๋ฉด ์ฌํ์ฉํ๋ ๋ฐฉ๋ฒ
- Memoized ๋ ๋ด์ฉ์ ์ฌ์ฌ์ฉํ ์, ๊ฐ์ DOM์์ ๋ฐ๋ ๋ถ๋ถ์ ํ์ธํ์ง ์์ ์ฑ๋ฅ์ด ํฅ์๋จ.
1. Redux
Recoil์ด ์๋ฌด๋ฆฌ ํธํ๊ธด ํด๋ .. Redux ๊ณต๋ถ๋ ๊พธ์คํ ํด์ผ๊ฒ ๋ค ^^.
2. React.memo
์ปดํฌ๋ํธ๋ฅผ React.memo()๋ก ๋ํ ์, ๋ ๋๋ง ๊ฒฐ๊ณผ๋ฅผ Memoizingํ๊ณ ๋ค์ ๋ ๋๋ง์์ Props๊ฐ ์ผ์นํ๋ค๋ฉด Memoizing๋ ๋ด์ฉ์ ์ฌ์ฌ์ฉํฉ๋๋ค.
3. useMemo
React.memo์ ํก์ฌํ๋ฐ useMemo๋ ํจ์์ ๊ฒฐ๊ณผ ๊ฐ์ Memoizingํ์ฌ ๋ถํ์ํ ์ฐ์ฐ์ ์ค์
๋๋ค.
(ํจ์๋ฅผ useMemo๋ก ๋ํ)
const computeExpensiveValue(a, b) = ๋น์ผ ๊ฐ ๊ณ์ฐ;
const memoizedValue = useMemo(() => computedExpensiveValue(a, b), [a, b]);useMemo์ [dependency]๊ฐ ๋ณ๊ฒฝ๋์์ ๋๋ง ๋ค์ ๊ณ์ฐํจ.
4. useCallback
useMemo๋ ํน์ ๊ฒฐ๊ณผ ๊ฐ์ ์ฌ์ฌ์ฉํ๋ ๋ฐ๋ฉด, useCallback์ ํน์ ํจ์๋ฅผ ์๋ก ๋ง๋ค์ง ์๊ณ ์ฌ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค.
const App = () => {
const onToggle = useCallback(id => {
setUsers(
users.map(user =>
user.id === id ? { ...user, active: !user.active } : user
)
);
}, [users]);
return <CreateUser onToggle={onToggle} />;
}๋ฉ๋ชจ์ ์ด์ ์ฉ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถ๊ฐ๋ก ํ์ํ๋ฏ๋ก, ๋ถํ์ํ Props ๋น๊ต๋ฅผ ์ค์ด๊ธฐ ์ํด์
useCallback,useMemo,React.memo๋ ์ปดํฌ๋ํธ์ ์ฑ๋ฅ์ ์ค์ ๋ก ๊ฐ์ ํ ์ ์๋ ์ํฉ์์๋ง ์ฌ์ฉ