useMemo()
1. ๊ฐ์
useMemo()
๋ ์ปดํฌ๋ํธ์ ์ต์ ํ๋ฅผ ์ํค๊ธฐ ์ํด ์ฌ์ฉ๋๋ hook ์ค ํ๋์ด๋ค. useMemo()
์์ Memo๋ Memoization์ ๋ปํ๋๋ฐ ์ด๋ ๊ธฐ์กด์ ์ํํ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ์ ์ด๋๊ฐ์ ์ ์ฅํด ๋๊ณ ๋์ผํ ์
๋ ฅ์ด ๋ค์ด์ค๋ฉด ์ฌํ์ฉํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ ๋งํ๋ค.
2. useMemo()๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ปดํฌ๋ํธ์ ๋๋๋ง
ํจ์ํ ์ปดํฌ๋ํธ๋ ๋ง ๊ทธ๋๋ก ํ๋์ ํจ์์ด๋ค. ์ฆ, ๋๋๋ง์ด ๋๋ค๋ ๊ฒ์ ํจ์๊ฐ ํธ์ถ์ด ๋๊ณ ํจ์ ๋ด๋ถ์์ ์ ์ธ๋ ๋ณ์๋ ์ด๊ธฐํ๊ฐ ๋๋ค.
์๋์ ๊ฐ์ ์ปดํฌ๋ํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์.
์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด App ์ปดํฌ๋ํธ๊ฐ ๋๋๋ง์ด ๋๋ฉด result์ calculate()
ํจ์๊ฐ ์คํ๋์ด ๋ฆฌํด๊ฐ์ด ํ ๋น๋๋ค.
์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋๋๋ง์์ผ๋ณด์. ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋๋๋ง์ state
, props
์ ๋ณํ๊ฐ ์์ ๋ ํ๋ค. ์ฌ๊ธฐ์๋ ๊ฐ๋จํ state
๋ฅผ ๋ณํ์์ผ ๋ฆฌ๋๋๋ง์ ํด๋ณด์.
์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์ถ๊ฐ ์์ฑํ๋ค.
์ด์ ๋ฆฌ๋๋๋ง ๋ฒํผ์ ๋๋ฅผ ๋ ๋ง๋ค state
๊ฐ์ด ๋ณํ๊ฒ ๋์ด ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋๋๋ง ๋๋ค. ์๋์ ์ฝ์์ ๋ณด์.
์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋๋๋ง ๋ ๋๋ง๋ค calculate()
ํจ์๊ฐ ๋ค์ ํธ์ถ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ๋์ ๋ณด์ด๋ result
๊ฐ์ ๊ฐ์ง๋ง ๋ฆฌ๋๋๋ง ๋ ๋๋ง๋ค ๋ณ์๊ฐ ์ด๊ธฐํ ๋๊ธฐ ๋๋ฌธ์ calculate()
ํจ์๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถ์ด ๋๋ค. ๋ง์ฝ calculate()
ํจ์๊ฐ ๋ฌด๊ฑฐ์ด ์ผ์ ํ๊ฒ ๋๋ค๋ฉด ๋นํจ์จ์ ์ธ ๊ณผ์ ์ ๊ณ์ํด์ ๊ฑฐ์น๊ฒ ๋๋ ๊ฒ์ด๋ค. ์ด๋ฅผ ํด๊ฒฐํ ์ ์๋ ๊ฒ์ด ๋ฐ๋ก useMemo()
์ด๋ค.
3. useMemo()๋ฅผ ์ฌ์ฉํ ์ปดํฌ๋ํธ์ ๋๋๋ง
์ด๋ฒ์๋ useMemo()
๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ๋๋๋ง ํด๋ณด์.
๋จผ์ useMemo()
์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
์ฌ์ฉ๋ฒ const value = useMemo(function, deps)
function: Memoization์ ํ ๊ฐ์ ๊ณ์ฐํด์ ๋ฆฌํดํด ์ค ์ฝ๋ฐฑํจ์
deps: ์์กด์ฑ ๋ฐฐ์ด๋ก
useEffect()
์ deps์ ๊ฐ๋ค.
2. useMemo()๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ปดํฌ๋ํธ์ ๋๋๋ง
์์ ์์ฑํ ์ฝ๋ ์ค const result = calculate();
๋ฅผ ์๋์ ๊ฐ์ด ์์ ํ์.
calculate()
ํจ์์ return๊ฐ์ Memoization์ ํ์ฌ result์ ํ ๋นํ๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์์กด์ฑ ๋ฐฐ์ด์ ๋น์ด์๊ธฐ ๋๋ฌธ์ ์ปดํฌ๋ํธ๊ฐ ์ฒ์ ์์ฑ๋ ๋๋ง useMemo()
์ ์ฝ๋ฐฑํจ์๊ฐ ์คํ๋๋ค.
์์ ๊ฐ์ด ์์ ํ ํ ์๋ฌด๋ฆฌ ๋ฆฌ๋๋๋ง ๋ฒํผ์ ๋๋ฌ๋ calculate()
ํจ์๊ฐ ํธ์ถ๋์ง ์๋๋ค.
๋ง์ฝ ์์กด์ฑ ๋ฐฐ์ด์ ์ด๋ ํ ๊ฐ์ด ์๋ค๋ฉด ๊ทธ ๊ฐ์ด ๋ณํ ๋ ๋ง๋ค ์ฝ๋ฐฑํจ์๋ฅผ ๋ค์ ํธ์ถํ๋ค. ํด๋น ๊ฒฝ์ฐ๋ฅผ ์ฝ๋์ ํจ๊ป ์ดํด๋ณด์. ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์ถ๊ฐ ๋ฐ ์์ ํ๋ค.
์ด๋ฒ์๋ useMemo()
์ ์์กด์ฑ ๋ฐฐ์ด์ num
๊ฐ์ ์ถ๊ฐ ํ์๊ณ num
๊ฐ์ state
์ผ๋ก Plus ๋ฒํผ์ ๋๋ฅด ๋ ๋ง๋ค ์ฆ๊ฐํ๋ค. ์ฆ, useMemo()
์ ์ฝ๋ฐฑํจ์๋ Plus ๋ฒํผ์ ๋๋ฌ num
๊ฐ์ด ์ฆ๊ฐํ๊ฒ ๋๋ฉด ๋ค์ ํธ์ถ์ด ๋์ด ์๋ก์ด result
๊ฐ์ ๊ฐ์ง๊ฒ ๋๋ค. ํ์ง๋ง ์ฌ์ ํ ๋ฆฌ๋๋๋ง ๋ฒํผ์ ๋๋ฅผ ๋์๋ ์ฝ๋ฐฑํจ์๊ฐ ๋ค์ ํธ์ถ ๋์ง ์๋๋ค.
์๋๋ ๊ฐ๊ฐ์ ๋ฒํผ์ ๋๋ ์ ๋ ๋ํ๋๋ ์ฝ์์ ๋ชจ์ต์ด๋ค.
4. useMemo()๋ฅผ ํญ์ ์ฌ์ฉํ์ฌ ๋๋๋ง ์ต์ ํ๋ฉด ์ข์๊ฑธ๋ผ?
์ ๋ต์ ๊ทธ๋ ์ง ์๋ค. ๊ฐ์ ์ฌํ์ฉํ๊ธฐ ์ํด ๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋นํ์ฌ ์ ์ฅ์ ํ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ๊ฐ๊น์ง ๋ชจ๋ useMemo()
๋ฅผ ์ฌ์ฉํ์ฌ Memoization์ ํ๊ฒ ๋๋ค๋ฉด ์คํ๋ ค ์ฑ๋ฅ์ ๋ ์ ์ข์์ง ์ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ผญ ํ์ํ ๋์๋ง ์ ์ ํ๊ฒ useMemo()
๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
5. Conclusion
๋ฆฌ์กํธ๋ก ์ฌ๋ฌ ํ๋ก์ ํธ๋ฅผ ์งํํ์ง๋ง
useMemo()
๋ฅผ ์ฌ์ฉํ ์ ์ ํ ๋ฒ๋ ์์๋ค. ๊ทธ ์ด์ ๋ ์ฒซ ๋ฒ์งธuseMemo()
์ ๋ํด ๋ชฐ๋๊ณ , ๋ ๋ฒ์งธ ๋๋๋ง ์ต์ ํ์ ๋ํ ๊ณ ๋ฏผ์ ํด ๋ณธ ์ ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ ์ง๊ธ๊น์ง ์งํํ๋ ๊ทธ๋ฆฌ๊ณ ์งํํ๊ณ ์๋ ๋ฆฌ์กํธ ํ๋ก์ญํธ๋ฅผ ๋ฆฌํฉํ ๋ง ํ ๋ ๋๋๋ง ์ต์ ํ๊ฐ ํ์ํ๋ค๋ฉด ์ ๊ทน์ ์ผ๋กuseMemo()
๋ฅผ ์ฌ์ฉํ ๊ณํ์ด๋ค. ๊ทธ๋ ๋ค๊ณ ๋ฌด๋ถ๋ณํ๊ฒ ์ฌ์ฉ์ ํ์ง ์์๊ฑฐ๋ค.๐
์ฐธ๊ณ
17. useMemo ๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ์ฐํ ๊ฐ ์ฌ์ฌ์ฉํ๊ธฐ [React] useMemo ์ฌ์ฉ๋ฒ ๋ฐ ์์
๋์์ด ๋ง์ด ๋์๋ ์ ํ๋ธ ๐ฌ
๐ 2022-08-02
Last updated