Front-End/React

React] Hook : useMemo

์™•๊ฐ€๐Ÿ‘ 2023. 6. 20. 15:25
728x90
๋ฐ˜์‘ํ˜•

useMemo

๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด, ๋ฆฌ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ์ „์ฒด๊ฐ€ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆํ•„์š”ํ•œ ๋ถ€๋ถ„๋„ ๊ณ„์† ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋ณ€์ˆ˜ ๊ฐ’์ด ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋ฆฌ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ,

Hook์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์ €์žฅํ•ด ๋†“๊ณ , ํ•„์š”ํ•  ๋•Œ๋งŒ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

const ๋ณ€์ˆ˜ = useMemo(()⇒{}), [deps]);

 

deps์— ์˜์กด์„ฑ์„ ๋ถ€์—ฌํ•˜์—ฌ ํ•ด๋‹น ๊ฐ’์ด ๋ณ€ํ•  ๋•Œ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด์ „์— ์‚ฌ์šฉํ–ˆ๋˜ useEffect์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

 

 


 

 

์˜ˆ

 

๋ฐ”๋‹ฅ์—์„œ ์ฐ์€ memo๋Š” inputํƒœ๊ทธ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ฐํžˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ ,

useMemo์•ˆ์— ์žˆ๋Š”๋ฐ test๋Š” ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ, setClick์œผ๋กœ ์ธํ•ด click๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งŒ ์ฐํžˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

useMemo๋กœ ์ „๋‹ฌ๋œ ํ•จ์ˆ˜๋Š” ๋ Œ๋”๋ง ์ค‘์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด๋ฉฐ, ํ†ต์ƒ์ ์œผ๋กœ ๋ Œ๋”๋ง ์ค‘์—๋Š” ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๋“ค์€ ํ•จ์ˆ˜ ๋‚ด์— ์ž‘์„ฑํ•˜์ง€ ๋ง์•„์•ผ ๋ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค๋ฉด, side-effect๋Š” useEffect์—์„œ ์ง„ํ–‰ํ•ด์•ผ ๋˜๋Š” ๊ฒƒ์ด์ง€ useMemo์—์„œ ํ•˜๋Š” ๊ฒŒ ์•„๋‹™๋‹ˆ๋‹ค.

 

 


 

 

๋ฆฌ๋ Œ๋”๋ง ๋˜๋ฉด์„œ ๊ณ„์† ์ดˆ๊ธฐํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์— useMemo๋กœ ๊ฐ’์„ ์ •ํ•ด๋†“๊ณ , ์˜์กด์„ฑ์„ ๋ถ€์—ฌํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์‹ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
728x90

'Front-End > React' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

React] Hook : useReducer  (0) 2023.06.22
React] Hook : useCallback  (0) 2023.06.22
React] Hook : useRef  (0) 2023.06.20
React] Strict Mode  (0) 2023.06.20
React] Mount & Rerender (LifeSycle)  (0) 2023.06.20