์ด์ ํ์ต์ ์ด์ด useMemo, useCallback์ ๋ํด ํ์ตํ๋ค.
์ปดํฌ๋ํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ํ๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง์ด ๋ ๋๋ง๋ค ๋ฆฌ๋ ๋๋ง์ ํ๋ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
๋๋ฌด ์ฆ์ ๋ฆฌ๋ ๋๋ง์ ์ฑ์ ์ข์ง ์์ ์ฑ๋ฅ์ ๋ผ์น๋ค.
//๊ธฐ๋ณธ ๋ฌธ๋ฒ
const ๋ณ์๋ช
= useMemo(ํจ์, ์์กด์ฑ ๋ฐฐ์ด)
//useMemo๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด importํด์ผํ๋ค.
import { useMemo } from "react";
function Calculator({value}){
//๊ธฐ์กด result๋ฅผ useMemo๋ก ๊ฐ์ธ์ฃผ๋ฉด ๋๋ค.
//const result = calculate(value);
const result = useMemo(() => calculate(value), [value]);
return (
<div>
{result}
</div>
)
}
value
๊ฐ์ด ๊ณ์ ๋ณ๊ฒฝ๋๋๋ฐ ์๋ ๊ฒฝ์ฐ ํด๋น ๊ฐ์ ์ด๋๊ฐ์ ์ ์ฅ(๋ฉ๋ชจ์ด์ ์ด์
)ํด ๋์๋ค๊ฐ ๋ค์ ๊บผ๋ด ์ธ ์๋ ๋ฐฉ๋ฒ์ผ๋ก useMemo๋ก ๊ฐ์ธ์ฃผ๋ฉด ์ด์ ๊ตฌ์ถ๋ ๋ ๋๋ง๊ณผ ์๋ก ๊ตฌ์ถ๋ ๋ ๋๋ง์ ๋น๊ตํด value
๊ฐ์ด ๋์ผํ ๊ฒฝ์ฐ ์ด์ ๋ ๋๋ง์ value
๊ฐ์ ์ฌํ์ฉํ ์ ์๋ค.Memoization?
๊ธฐ์กด์ ์ํํ ์ฐ์ฐ์ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด ๋๊ณ , ๋์ผํ ์ ๋ ฅ์ด ๋ค์ด์ค๋ฉด ์ฌํ์ฉํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ
useMemo๋ ๋ณต์กํ ์ฐ์ฐ์ ์ค๋ณต์ ํผํ๊ณ React ์ฑ์ ์ฑ๋ฅ์ ์ต์ ํ ์ํจ๋ค.
//๊ธฐ๋ณธ ๋ฌธ๋ฒ
const ๋ณ์๋ช
= useCallback(ํจ์, ์์กด์ฑ ๋ฐฐ์ด)
//useCallback์ ์ฌ์ฉํ๋ ค๋ฉด importํด์ผํ๋ค.
import { useCallback } from "react";
function Calculator({x, y}){
//๊ธฐ์กด add๋ฅผ useCallback์ผ๋ก ๊ฐ์ธ์ฃผ๋ฉด ๋๋ค.
//const add = () => x + y;
const add = useCallback(() => x + y, [x, y]);
return (
<div>
{add()}
</div>
)
}
useMemo
- ํจ์์ ๋ฐํ ๊ฐ์ ์บ์ํ๋ค.
- ๊ณ์ฐ๋์ด ๋ง์ ํจ์์ ๊ฒฐ๊ณผ๋ฅผ ์บ์ํ๊ณ ์ฌ์ฌ์ฉํ๋๋ฐ ์ ์ฉํ๋ค.
useCallback
- ํจ์ ์์ฒด๋ฅผ ์บ์ํ๋ค.
- ์์ฃผ ์๋ก์ด ํจ์๊ฐ ์์ฑ๋๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ต์ ํํ๋๋ฐ ์ ์ฉํ๋ค.
useMemo, useCallback ๋ ๊ฐ์ง Hook์ ๋ ๋๋ง์ ์ต์ ํํ๋๋ฐ ์ฌ์ฉํ๋ค.
๋ ๋ค ๋น์ทํ ์ ์์ง๋ง ์ด๋ ๊ฒ์ ์ฌ์ฌ์ฉํ๋์ง๊ฐ ๋ค๋ฅด๋ค๋ ์ ์ ์ฐธ๊ณ ํด
์ดํ ํ๋ก์ ํธ๋ ํ์
์์ ์ฌ์ฉํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.