์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- ๋ฒ์ง ๋ชจํ
- Cmarket
- ์คํ ์ด์ธ ์ฝ๋42๊ธฐ
- Lifting state
- State
- ์ปดํจํฐ ๊ณตํ
- prototype
- html
- ๋ฒ๋ค๋ง
- React
- jsx
- props drilling
- ์๋งจํฑ์์
- ํ ์คํธ ์์
- ํผํฐ ๋ชจ๋น
- BFS์ DFS
- wai-aria
- ์ ์ด์ฝฅ ๋์จ
- fetch api
- css
- Study
- ์คํ ์ด์ธ ์ฝ๋
- JavaScript
- ํ๋ก๊ทธ๋๋จธ์ค
- ํผํฐ ๋ชจ๋น์ ๋ฒ์ง ๋ชจํ
- ๊ณ ์ฐจํจ์
- WEB
- git
- css animation
- Effect Hook
- Today
- Total
roqkf
[React] Hook | useMemo ๋ณธ๋ฌธ
์ปดํฌ๋ํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ํ๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง์ด ๋ ๋๋ง๋ค ๋ฆฌ๋ ๋๋ง์ ํ๋ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ทธ๋ฌ๋ ๋๋ฌด ์ฆ์ ๋ฆฌ๋ ๋๋ง์ ์ฑ์ ์ข์ง ์์ ์ฑ๋ฅ์ ๋ผ์น๋ค.
[๊ทธ๋ฆผ] ๋๋ฌด ๋ง์ ๋ ๋๋ง์ ์ฑ์ ์ ์ข์ ์ฑ๋ฅ์ ๋ฏธ์น๋ ๊ทน๋จ์ ์ธ ์
๋ ๋๋ง ์ต์ ํ๋ฅผ ์ํ Hook๋ ์กด์ฌํ๋๋ฐ, useCallback๊ณผ useMemo๊ฐ ๋ฐ๋ก ๊ทธ ์ญํ ์ ํ๋ Hook์ด๋ค.
๐ useMemo๋?
- ํน์ ๊ฐ(value)๋ฅผ ์ฌ์ฌ์ฉํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ Hook
function Calculator({value}){
const result = calculate(value);
return <>
<div>
{result}
</div>
</>;
}
ํด๋น ์ปดํฌ๋ํธ๋ props๋ก ๋์ด์จ value๊ฐ์ calculate๋ผ๋ ํจ์์ ์ธ์๋ก ๋๊ฒจ์ result ๊ฐ์ ๊ตฌํ ํ,
๋ง์ฝ ์ฌ๊ธฐ์ calculate๊ฐ ๋ด๋ถ์ ์ผ๋ก ๋ณต์กํ ์ฐ์ฐ์ ํด์ผ ํ๋ ํจ์๋ผ ๊ณ์ฐ๋ ๊ฐ์ ๋ฐํํ๋ ๋ฐ์ ์๊ฐ์ด ๋ช ์ด ์ด์ ๊ฑธ๋ฆฐ๋ค๊ณ ๊ฐ์ ํด ๋ณด์. ๊ทธ๋ ๋ค๋ฉด ํด๋น ์ปดํฌ๋ํธ๋ ๋ ๋๋ง์ ํ ๋๋ง๋ค ์ด ํจ์๋ฅผ ๊ณ์ํด์ ํธ์ถํ ๊ฒ์ด๊ณ , ๊ทธ ๋๋ง๋ค ์๊ฐ์ด ๋ช ์ด ์ด์ ์์๊ฐ ๋ ๊ฒ์ด๋ค. ์ด ๋ช ์ด์ ์ง์ฐ์ ๋ ๋๋ง์๋ ์ํฅ์ ๋ฏธ์น ๊ฒ์ด๊ณ , ์ฌ์ฉ์๋ โ์ฑ์ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฌ๋ค?โ๋ผ๋ ์๊ฐ์ ํ๊ฒ ๋ ๊ฒ์ด๋ค.
/* useMemo๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๊ผญ import ํ๊ธฐ */
import { useMemo } from "react";
function Calculator({value}){
const result = useMemo(() => calculate(value), [value]);
return <>
<div>
{result}
</div>
</>;
}
์ฌ๊ธฐ value ๋ฅผ ์ธ์๋ก ๋ฐ๋ Calculator ์ปดํฌ๋ํธ๊ฐ ์๋ค. value ๋ ์ผ์ข ์ ๊ฐ์ผ๋ก์, ์ด ๊ฐ์ด ๊ณ์ ๋ฐ๋๋ ๊ฒฝ์ฐ๋ผ๋ฉด ์ด์ฉ ์ ์๊ฒ ์ง๋ง, ๋ ๋๋ง์ ํ ๋๋ง๋ค ์ด value๊ฐ์ด ๊ณ์ ๋ฐ๋๋ ๊ฒ ์๋๋ผ๊ณ ์๊ฐํด ๋ณด์. ๊ทธ๋ผ ์ด ๊ฐ์ ์ด๋๊ฐ์ ์ ์ฅ์ ํด๋๋ค๊ฐ ๋ค์ ๊บผ๋ด์ ์ธ ์๋ง ์๋ค๋ฉด ๊ตณ์ด calculate ํจ์๋ฅผ ํธ์ถํ ํ์๋ ์์ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ useMemo Hook์ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ฐ ์์ผ๋ก useMemo๋ฅผ ํธ์ถํ์ฌ calculate๋ฅผ ๊ฐ์ธ์ฃผ๋ฉด, ์ด์ ์ ๊ตฌ์ถ๋ ๋ ๋๋ง๊ณผ ์๋ก์ด ๊ตฌ์ถ๋๋ ๋ ๋๋ง์ ๋น๊ตํด value๊ฐ์ด ๋์ผํ ๊ฒฝ์ฐ์๋ ์ด์ ๋ ๋๋ง์ value๊ฐ์ ๊ทธ๋๋ก ์ฌํ์ฉํ ์ ์๊ฒ ๋๋ค. ์ด๋ ๋ฉ๋ชจ์ด์ ์ด์ (Memoization) ๊ฐ๋ ๊ณผ ๊ธด๋ฐํ ๊ด๊ณ๊ฐ ์๋ค.
โจ Memoization
- ์๊ณ ๋ฆฌ์ฆ์์ ์์ฃผ ๋์ค๋ ๊ฐ๋
- ๊ธฐ์กด์ ์ํํ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ์ ํด๋๊ณ , ๋์ผํ ์ ๋ ฅ์ด ๋ค์ด์ค๋ฉด ์ฌํ์ฉํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ
์ด ๋ฉ๋ชจ์ด์ ์ด์ ์ ์ ์ ํ ์ฌ์ฉํ๋ค๋ฉด ๊ตณ์ด ์ค๋ณต ์ฐ์ฐ์ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฑ์ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์๋ค.
useMemo๋ ๋ฐ๋ก ์ด ๊ฐ๋ ์ ์ด์ฉํ์ฌ ๋ณต์กํ ์ฐ์ฐ์ ์ค๋ณต์ ํผํ๊ณ React ์ฑ์ ์ฑ๋ฅ์ ์ต์ ํ์ํจ๋ค. ์ง์ ๋ฉ๋ชจ์ด์ ์ด์ ๊ฐ๋ ์ ์ด์ฉํ์ฌ ๋ก์ง์ ๊ตฌํํ ์๋ ์๊ฒ ์ผ๋, useMemo Hook์ ํธ์ถํ๋ค๋ฉด ์ด๋ฐ ๋ก์ง์ ์ง์ ๊ตฌํํ๋ ๊ฒ์ ๋์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ํจ์ฌ ๊ฐํธํ๋ค๊ณ ํ ์ ์๋ค.
๐ ์ค์ต
์์ ์ปดํฌ๋ํธ์์ ์ค์ ๋ก ์ฐ์ฐ ๋ก์ง์ ์ํฅ์ ์ฃผ๋ ๊ฐ์ val1๊ณผ val2์ด๋ค. ํ์ฌ๋ ์ด๋ฆ ์ํ๊ฐ ๋ณํํ๋ฉด add ํจ์๊ฐ ๊ณ์ ๊ฐ์ ๊ฒฐ๊ด๊ฐ์ ๋ฆฌํดํจ์๋ ๋ถ๊ตฌํ๊ณ ๋ถํ์ํ๊ฒ ๊ณ์ ํธ์ถ๋๊ณ ์๊ธฐ ๋๋ฌธ์, useMemo๋ฅผ ์ด์ฉํ์ฌ add ํจ์์ ํธ์ถ์ ์ต์ํํ๋ค. ์ด๋ฆ์ ์ ๋ ฅํ ๋๋ add ํจ์๊ฐ ํธ์ถ๋์ง ์์์ผ ์ต์ ํ๊ฐ ๋ ์ปดํฌ๋ํธ๋ผ๊ณ ๋ณผ ์ ์๋ค.'๐ป Development > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] Custom Hooks (0) | 2023.03.01 |
---|---|
[React] Hook | useCallback (0) | 2023.03.01 |
[React] React Hooks (0) | 2023.03.01 |
[React] React Diffing Algorithm (0) | 2023.03.01 |
[React] Virtual DOM (0) | 2023.03.01 |