Front-End/React

React] Hook : useCallback & useMemo ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ๋ ๊นŒ?

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

useCallback & useMemo ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ๋ ๊นŒ?

๋‘ ๊ฐœ์˜ hook์— ๋Œ€ํ•ด์„œ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋‘ hook์€ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๋˜๋‹ˆ๊น ํ•จ์ˆ˜๋‚˜ ๊ฒฐ๊ณผ๊ฐ’์ด ์žˆ๋Š” ๊ฑฐ์— ์ „๋ถ€ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์ง€ ์•Š์„๊นŒ??๋ผ๋Š” ์ƒ๊ฐ์„ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ์ƒ๊ฐ์— ์„ฑ๋Šฅ ์ข‹์•„์ง€๊ฒ ์ง€ ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ๋˜๋ ค ์„ฑ๋Šฅ์ €ํ•˜๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ๋ƒ๋ฉด ๊ฒฐ๊ตญ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ํ•˜๋Š”๋ฐ์—๋„ ๊ทธ๋งŒํ•œ ๋น„์šฉ์ด ๋“ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ์— ์–ธ์ œ ์“ฐ๊ณ , ์–ธ์ œ ์“ฐ๋ฉด์•ˆ์ข‹์€์ง€์— ๋Œ€ํ•ด ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

 


 

 

โŒ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

  • ๋ณต์žกํ•˜์ง€ ์•Š์€ ์—ฐ์‚ฐ์— ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์€ ์˜คํžˆ๋ ค ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค.
    onClick์ด๋ฒคํŠธ๋กœ setStateํ•ด์ฃผ๋Š” ๊ฒฝ์šฐ ๊ฐ™์ด ๋‹จ์ˆœํ•œ ์ƒํ™ฉ์ด๋ผ๋ฉด, ๋ฆฌ๋ Œ๋”๋ง ๋œ๋‹ค๊ณ  ํ•˜๋”๋ผ๊ณ  ๋‹ค์‹œ ๊ทธ๋ ค์ฃผ๋Š” ํŽธํžˆ ํ›จ์”ฌ ๋‚ซ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    React์—์„œ๋„ ์ถฉ๋ถ„ํžˆ ์ตœ์ ํ™”๊ฐ€ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— useState๋‚˜ useDispatch์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋Š” ์ด๋ฏธ ์ ์šฉ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
const onClick = useCallback((value) => setState(value), []);

 

  • ์˜์กด์„ฑ ๋ฐฐ์—ด์— ์‹ ๊ฒฝ ์จ์•ผ ๋ฉ๋‹ˆ๋‹ค.
    useCallback์ด๋‚˜ useMemo ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” props๋ฅผ ์˜์กด์„ฑ๋ถ€์—ฌํ•˜๊ฒŒ ๋˜๋ฉด, ์‚ฌ์šฉํ•˜๋Š” ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง„๋‹ค.
  • ๋„ˆ๋ฌด ์ž์ฃผ ๋ฐ”๋€Œ๋Š” ๊ฐ’์— ์˜์กด์„ฑ์„ ๋ถ€์—ฌํ•  ๋•Œ๋„ ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ์˜๋„์ ์œผ๋กœ ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋‚˜ ๊ฐ’์„ ๊ณ„์‚ฐํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๊ตณ์ด ์‚ฌ์šฉํ•  ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ฆฌ๋ Œ๋”๋ง ๊ด€๋ จ์ด ์—†๋Š” ์ปดํฌ๋„ŒํŠธ๋ผ๋ฉด ๊ตณ์ด ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
    ๊ฒฐ๊ตญ ๋ฆฌ๋ Œ๋”๋ง ํ•  ๋•Œ ํšจ์œจ์ ์œผ๋กœ ๋ Œ๋”๋ง ํ•˜๋ ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—..

 

 


 

 

๐Ÿ‘์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

  • ์‚ฌ์šฉ๋  ํ•จ์ˆ˜ ๋‚ด์šฉ์ด ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ๋งŽ์„ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • porps๋กœ ํ•จ์ˆ˜๋ฅผ ๋„˜๊ธธ ๋•Œ, ๋ถˆํ•„์š”ํ•œ ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚œ๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ, ๊ฒฐ๊ณผ๊ฐ’์„ ๋ณด๊ณ , ๋™์ผํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋ฉด useMemo๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฆฌ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚ฌ์„ ๋–„, ์ž์‹ ์ปดํฌ๋„ŒํŠธ์— ์ผ์–ด๋‚˜์ง€ ์•Š์•˜์œผ๋ฉด ํ•  ๋–„ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 


 

 

 

์ตœ๋Œ€ํ•œ ์„ฑ๋Šฅ ์ข‹๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋ ค๋‹ค๊ฐ€ ์˜คํžˆ๋ ค ๋…์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•ด๋‹นํ•˜๋Š” hook๋“ค์„ ์‚ฌ์šฉํ•  ๋•Œ, ์˜๋„์™€ ๊ฒฐ๊ณผ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ณ , ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๋ณด๋‹ค ๋‚˜์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ์ž˜ ๋ชปํ•˜๊ณ  ์žˆ๋Š”๋ฐ... ๋‹ค์Œ ํ”„๋กœ์ ํŠธ ํ•˜๊ฒŒ ๋˜๋ฉด ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ์ž˜ ์งœ๋ด์•ผ ๋  ๋“ฏ์‹ถ์Šต๋‹ˆ๋‹ค.
728x90

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

React] Hook : CustomHook  (0) 2023.06.26
React] Fragment <></>  (0) 2023.06.26
React] Hook : useContext ๋‹จ์  ํ•ด๊ฒฐ  (0) 2023.06.26
React] Hook : useContext  (0) 2023.06.23
React] Hook : useState ๋น„๋™๊ธฐ โ†’ ๋™๊ธฐ ํ•˜๋Š” ๋ฒ•  (0) 2023.06.22