Today, What I learned?
ํ๋ก ํธ์์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ด๋ป๊ฒ ํ ์ ์์ ๊ฒ์ธ๊ฐ?๋ฅผ ์์ ๊ณ ๋ฏผํ๊ณ ์ฐพ์๋ณด๊ณ , ์ฌ๋ฌ ๊ธ๋ค์ ์ฝ์ด๋ณด๊ณ ์๋ค.
๊ทธ ๋ฐฉ๋ฒ ์ค ํ๋์ธ ๋ถํ์ํ ๋ ๋๋ง ์ค์ด๊ธฐ!..
๋ ๋๋ง์ ์ค์ด๋ ๋ฐฉ๋ฒ ์ค ํ๋์ธ memoization์ ๋ํด ์ ๋ฆฌํด ๋ณธ๋ค.
memoization
memoization์ ๋ฆฌ์กํธ์๋ง ํด๋น๋๋ ๊ธฐ์ ์ ์๋๋ค. ์ปดํจํฐ๊ฐ ๋์ผํ ๊ณ์ฐ ์์ ์ ๋ฐ๋ณตํด์ผ ํ ๋,
์ด์ ์ ๊ณ์ฐํ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด ๋๊ณ ์ฌ์ฉํ์ฌ ์๋๋ฅผ ๋์ด๋ ๊ธฐ์ ์ด๋ค.
์ฝ๊ฒ ๋งํด์ ๋ฐ๋ณต ์์ ํด์ผ ํ ๋ถ๋ถ์ ๋ฉ๋ชจ๋ฅผ ํด๋๊ณ ๊ฐ์ ธ๋ค ์ฐ๋ ๋๋?
๋ณดํต ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํ๋ฅผ ์ํด์ ๋ง์ด ์ฌ์ฉ๋๋ค.
๋ฆฌ์กํธ์์์ memoization ๋ฐฉ๋ฒ์ ํฌ๊ฒ ์ธ ๊ฐ์ง.
React.memo
, useMemo
, useCallback
์ด๋ ๊ฒ ์๋ค.
์ฐจ๋ก๋๋ก ์์๋ณด๊ธฐ ์ ์ ๋จผ์ ์ด๋จ ๋ ๋ฆฌ๋ ๋๋ง์ด ๋๋์ง๋ฅผ ๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
๋ฆฌ๋ ๋๋ง ์กฐ๊ฑด
๋ฆฌ์กํธ์์ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง ๋๋ ์กฐ๊ฑด์ ์ด๋ ๋ค.
- ์ปดํฌ๋ํธ์์ state๊ฐ ๋ฐ๋์์ ๋
- ์ปดํฌ๋ํธ๊ฐ ๋ด๋ ค๋ฐ์ props๊ฐ ๋ณ๊ฒฝ๋์์ ๋
- ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง ๋ ๊ฒฝ์ฐ
React.memo
React.memo
๋ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ธ์ ์ฌ์ฉํ๊ณ , ์ปดํฌ๋ํธ๋ฅผ ์บ์ฑํ๋ ํจ์๋ค.
๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง ๋ ๋, ์์ ์ปดํฌ๋ํธ์ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ๋ง๋๋ค.
์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ค.
์ปดํฌ๋ํธ๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ๊ฑฐ๋, export ํ ๋ ๊ฐ์ธ์ฃผ์ด ์ฌ์ฉํ๊ฑฐ๋.
const Result = React.memo(() => {
return ()
})
export default React.memo(Box1);
useMemo
useMemo
๋ ๊ฐ์ ์บ์ฑํ๋ค.
๋์ผํ ๊ฐ์ ๋ฐํํ๋ ํจ์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถํ๋ค๋ฉด, ์ฒ์ ๊ฐ์ ์ ์ฅํด์ ํ์ํ ๋๋ง๋ค ์ด์ ์ ๊ฐ๊ณผ ๋์ผํ๋ค๋ฉด ํด๋น ๊ฐ์ ๋ค์ ์ฌ์ฉํ๋ ๊ฒ!..
์์กด์ฑ ๋ฐฐ์ด์ ๊ฐ์ด ๋ฐ๋ ๋๋ง๋ค ์ฝ๋ฐฑํจ์๋ฅผ ๋ค์ ํธ์ถํด์ ๋ฉ๋ชจ๋ฆฌ์ ๊ฒฐ๊ด๊ฐ์ ์ ๋ฐ์ดํธํ๋ค.
const value = useMemo(()=>{
return ๋ฐํํ ํจ์
}, [depenedencyArray];
๋ฌด๊ฑฐ์ด ์์ ์ ํ๊ณ ์์ ๊ฒฝ์ฐ์ ๋งค๋ฒ ํจ์๊ฐ ๋ค์ ๋ ๋๋ง ๋์ด ๊ฐ์ ๋ฐ์์ฌ ํ์๋ ์๊ธฐ ๋๋ฌธ์, ์ด๋ฐ ๊ฒฝ์ฐ์ ์ฌ์ฉํ ์ ์๋ค.
useMemo(()=> heavywork(),[]);
useCallback
useCallback
์ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง ๋ ๋ ํจ์์ ์ฌ์์ฑ์ ๋ง์์ค๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ํจ์ ์ญ์ ๊ฐ์ฒด์ ํ ์ข ๋ฅ์ด๊ธฐ ๋๋ฌธ์ ์ฐธ์กฐ ํ์ ์ด๋ค.
์ฆ ๋ ๋๋ง ๋ ๋๋ง๋ค ์ฐธ์กฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๊ณ , ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ธ์๋๋ ๊ฒ์ด๋ค.
๋ฆฌ๋ ๋๋ง ๋ ๊ฒฝ์ฐ ํจ์ ๋ด์ฉ ์์ฒด๋ ๋์ผํ๊ธฐ ๋๋ฌธ์ ํจ์ ์์ฒด๋ฅผ ๋ฉ๋ชจํ๋ค๊ณ ๋ณผ ์ ์๋ค.
const initCount = useCallback(()=>{
// ํจ์ ๋ด์ฉ
}, []);
// ์ฌ๊ธฐ์์ [] => ์์กด์ฑ ๋ฐฐ์ด
ํ์ง๋ง ๋ชจ๋ ์ปดํฌ๋ํธ์ ๋ฉ๋ชจ๋ฅผ ์ ์ฉํ๋ ๊ฒ์ด ์ข์ง ์๋ค.
๋ชจ๋ ์ปดํฌ๋ํธ์ ๋ฉ๋ชจ๋ฅผ ์ ์ฉํ๋ค๋ฉด ์บ์๊ฐ ๋๋ฌด ์ปค์ง ์ ์๊ณ , props ๋ณ๊ฒฝ์ด ๋ง์ด ์ผ์ด๋๋ ๊ฒฝ์ฐ์๋ ์บ์ฑ์ ํ๋ ๊ฒ์ด ๋ฌด์๋ฏธํ๊ธฐ ๋๋ฌธ!...
์ด์ ์ฐจ์ฃผ๋ถํฐ ์ต์ ํ๋ฅผ ํด๋ ๊ฐ ํ ๋ฐ ๊ทธ๋ memoization์ ์ด๋ค ์์ผ๋ก ์ฌ์ฉํ๋์ง ๋จ๊ฒจ๋ด์ผ๊ฒ ๋ค.
'๐ Studying > ๐ TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] ์ด๋ฏธ์ง ํ๊ทธ ๋์ ๊ฒฝ๋ก ์ถ๊ฐ src require (0) | 2023.02.28 |
---|---|
[React] ํ์ด์ด๋ฒ ์ด์ค ํ๋กํ ์ด๋ฏธ์ง ์ฉ๋ ์ต์ ํ (0) | 2023.02.27 |
[React] useEffect์ ์คํ ์์ (1) | 2023.02.23 |
๋ง์ดํ์ด์ง ๋ฒ๊ทธ, ์ ๋ณด ๋ณ๊ฒฝ ํ์ธ ์ ํจ์ฑ ๊ฒ์ฌ ๐ค (0) | 2023.02.21 |
[React] React.lazy ์ Suspense (0) | 2023.02.20 |
Comment