useMemo์™€ useCallback ๐Ÿ™„

c_yjยท2022๋…„ 7์›” 17์ผ
0

React

๋ชฉ๋ก ๋ณด๊ธฐ
9/13

useMemo๋ฅผ ๋ฐฐ์šฐ๊ธฐ์ „์— useMemo์—์„œ Memo ๋ฅผ ๋œปํ•˜๋Š” ๋ฉ”๋ชจ์ด์ œ์ด์…˜(memoization)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

๋ฉ”๋ชจ์ด์ œ์ด์…˜์ด๋ž€ โ“โ“

๋ฉ”๋ชจ์ด์ œ์ด์…˜(memoization)์€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ผํ•œ ๊ณ„์‚ฐ์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ•  ๋•Œ, ์ด์ „์— ๊ณ„์‚ฐํ•œ ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•จ์œผ๋กœ์จ ๋™์ผํ•œ ๊ณ„์‚ฐ์˜ ๋ฐ˜๋ณต ์ˆ˜ํ–‰์„ ์ œ๊ฑฐํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ๋™์  ๊ณ„ํš๋ฒ•์˜ ํ•ต์‹ฌ์ด ๋˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค

useMemo๋ž€ ๐Ÿ˜ฎ

๋ฉ”๋ชจ์ด์ œ์ด์…˜๋œ '๊ฐ’'์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


์ƒ์„ฑ(create) ํ•จ์ˆ˜์™€ ๊ทธ๊ฒƒ์˜ ์˜์กด์„ฑ ๊ฐ’์˜ ๋ฐฐ์—ด์„ ์ „๋‹ฌํ•˜์„ธ์š”. useMemo๋Š” ์˜์กด์„ฑ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ์—๋งŒ ๋ฉ”๋ชจ์ด์ œ์ด์…˜๋œ ๊ฐ’๋งŒ ๋‹ค์‹œ ๊ณ„์‚ฐ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ตœ์ ํ™”๋Š” ๋ชจ๋“  ๋ Œ๋”๋ง ์‹œ์˜ ๊ณ ๋น„์šฉ ๊ณ„์‚ฐ์„ ๋ฐฉ์ง€ํ•˜๊ฒŒ ํ•ด ์ค๋‹ˆ๋‹ค.

์˜ˆ์‹œ

์˜์กด์„ฑ ๊ฐ’์ธ isKorea๊ฐ€ ๋ณ€๊ฒฝ๋ ๋–„๋งŒ ์ƒ์„ฑํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

useCallback์ด๋ž€ ๐Ÿ˜ฎ

๋ฉ”๋ชจ์ด์ œ์ด์…˜๋œ 'ํ•จ์ˆ˜'๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


์ธ๋ผ์ธ ์ฝœ๋ฐฑ๊ณผ ๊ทธ๊ฒƒ์˜ ์˜์กด์„ฑ ๊ฐ’์˜ ๋ฐฐ์—ด์„ ์ „๋‹ฌํ•˜์„ธ์š”. useCallback์€ ์ฝœ๋ฐฑ์˜ ๋ฉ”๋ชจ์ด์ œ์ด์…˜๋œ ๋ฒ„์ „์„ ๋ฐ˜ํ™˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ๋ฉ”๋ชจ์ด์ œ์ด์…˜๋œ ๋ฒ„์ „์€ ์ฝœ๋ฐฑ์˜ ์˜์กด์„ฑ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ์—๋งŒ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ๋ Œ๋”๋ง์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ฐธ์กฐ์˜ ๋™์ผ์„ฑ์— ์˜์กด์ ์ธ ์ตœ์ ํ™”๋œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์— ์ฝœ๋ฐฑ์„ ์ „๋‹ฌํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ
App.js

Box.js

์˜์กด์„ฑ ๊ฐ’์ธ size๊ฐ€ ๋ณ€๊ฒฝ๋ ๋–„๋งŒ ์ธ๋ผ์ธ ์ฝœ๋ฐฑ์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

https://www.youtube.com/watch?v=XfUF9qLa3mU
https://www.youtube.com/watch?v=e-CnI8Q5RY4&t=22s
https://ko.reactjs.org/docs/hooks-reference.html#usememo

profile
FrontEnd Developer

0๊ฐœ์˜ ๋Œ“๊ธ€