Front-End/React

React] Hook : useCallback

์™•๊ฐ€๐Ÿ‘ 2023. 6. 22. 14:56
728x90
๋ฐ˜์‘ํ˜•

useCallback

useMemo์™€ ๋น„์Šทํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ ๋ฐ ์„ฑ๋Šฅ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” hook์ž…๋‹ˆ๋‹ค.

useMemo๋Š” ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๊ณ  ํ•˜๋ฉด, useCallback์€ ํ•จ์ˆ˜๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ๋Š” ์ฃผ๋กœ ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋ณด๋‹ค๋Š” ํ•จ์ˆ˜ ์ƒ์„ฑ ์ž์ฒด์˜ ๋น„์šฉ์ด ํด ๋•Œ ์‚ฌ์šฉํ•˜์ง€๋งŒ,

์ž์‹ ์ปดํฌ๋„ŒํŠธ์— ํ•จ์ˆ˜๋ฅผ props๋กœ ๋„˜๊ธธ ๋•Œ๋Š” ํ•ด๋‹น ํ•จ์ˆ˜๋Š” useCallback์œผ๋กœ ๊ฐ์‹ธ์•ผํ•œ๋‹ค.

 

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

 

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

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

 

 


 

 

์˜ˆ

 

onClickํ•จ์ˆ˜์— useCallback์„ ์คŒ์œผ๋กœ์จ ๋ฆฌ๋ Œ๋”๋ง ๋  ๋•Œ, ํ•จ์ˆ˜๊ฐ€ ๋‹ค์‹œ ์ •์˜๋˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

deps ์•ˆ์ด ๋น„์—ˆ๊ธฐ ๋•Œ๋ฌธ์—

AppClick๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ count๊ฐ€ ์ฆ๊ฐ€ํ•ด๋„, TextClick์„ ํ–ˆ์„ ๋•Œ 0์ด ์ฐํžˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,

deps์— count๋ฅผ ๋„ฃ์–ด์ฃผ๊ฒŒ ๋˜๋ฉด, ์ฆ๊ฐ€ํ•œ count๊ฐ€ ์ฐํžˆ๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 


 

 

useCallback์ด๋‚˜ useMemo๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ์„ฑ๋Šฅ์ €ํ•˜์— ์›์ธ์ด ๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
'์„ฑ๋Šฅ ์ข‹์•„์ง€๊ฒ ์ง€' ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋‚จ๋ฐœํ•˜๊ธฐ๋ณด๋‹ค๋Š” ๊ผญ ํ•„์š”ํ•œ ๊ณณ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๋“ฏ์‹ถ์Šต๋‹ˆ๋‹ค.
(๋‚˜์ค‘์— ๋”ฐ๋กœ ์ด์œ ๋ฅผ ์ฐพ์•„๋ด์•ผ๋  ๋“ฏ ์‹ถ์Šต๋‹ˆ๋‹ค.)
728x90

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

React] Hook : useState ๋น„๋™๊ธฐ โ†’ ๋™๊ธฐ ํ•˜๋Š” ๋ฒ•  (0) 2023.06.22
React] Hook : useReducer  (0) 2023.06.22
React] Hook : useMemo  (0) 2023.06.20
React] Hook : useRef  (0) 2023.06.20
React] Strict Mode  (0) 2023.06.20