๐Ÿ“™

useMemo ๊ฐœ์š”

 
 

6.1 useMemo ๊ฐœ์š”

 
useMemo๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ํ›…์ž…๋‹ˆ๋‹ค. useMemo์—์„œ Memo๋Š” memoization์„ ๋œปํ•˜๋ฉฐ ์ด์–ด์ง€๋Š” ์ฑ•ํ„ฐ์—์„œ ๋ฉ”๋ชจ์ด์ œ์ด์…˜๊ณผ useMemo๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
 

6.1.2 ๋ฉ”๋ชจ์ด์ œ์ด์…˜(Memoization)์ด๋ž€?

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

6.1.3 ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ

 
์•„๋ž˜์˜ ์˜ˆ์ œ์—์„œ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ž€ MyComponent๋ฅผ ๋งํ•˜๋ฉฐ ๋ง ๊ทธ๋Œ€๋กœ ํ•จ์ˆ˜๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง์ด ๋œ๋‹ค๋Š” ๊ฒƒ์€ MyComponent๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
 
function calc(a, b) { return a + b } // ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ const MyComponent() { const result = calc(3,5) return <p>{result}</p> }
 
๊ธฐ๋ณธ์ ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๋Š” state๊ฐ€ ๋ณ€๊ฒฝ ๋˜๊ฑฐ๋‚˜, props๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ๋งˆ๋‹ค ๋ฆฌ๋ Œ๋”๋ง์ด ๋˜๋Š”๋ฐ, ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฆฌ๋ Œ๋”๋ง์ด ๋  ๋•Œ๋งˆ๋‹ค MyComponent๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๊ณ  ๋ณ€์ˆ˜ result๋Š” ์ดˆ๊ธฐํ™” ๋˜๋ฏ€๋กœ ๋งค๋ฒˆ calc ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ์ œ์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ๋งŒ ํ•˜๊ณ  ๋๋‚ด๋Š” ํ•จ์ˆ˜๋ผ๋ฉด ์ƒ๊ด€์—†๊ฒ ์ง€๋งŒ, ๋งŒ์•ฝ calc ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์•ฝ 10์ดˆ๊ฐ€๋Ÿ‰์˜ ์—ฐ์‚ฐ์„ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๋ฉด ์–ด๋–จ๊นŒ์š”?
๋ฆฌ๋ Œ๋”๋ง์ด ์„ธ ๋ฒˆ๋งŒ ์ผ์–ด๋‚˜๋„ ๊ฐ™์€ ๊ฐ’์„ ๋ฐ˜๋ณต ๊ณ„์‚ฐํ•˜์—ฌ result์— ํ• ๋‹น ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ต‰์žฅํžˆ ๋น„ํšจ์œจ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” useMemo๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ํ•จ์ˆ˜์˜ ๊ฒฐ๊ด๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ ๋’ค, ๋ฆฌ๋ Œ๋”๋ง์ด ๋  ๋•Œ ๊ทธ ๊ฒฐ๊ด๊ฐ’๋งŒ ๊ฐ€์ ธ์™€์„œ ์žฌ์‚ฌ์šฉํ•ด ์คŒ์œผ๋กœ์จ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 

6.2 useMemo์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ

 
// ๋นˆ ๋ฐฐ์—ด์ด ๋“ค์–ด๊ฐ„ ๊ฒฝ์šฐ const result = useMemo(() => calc(a, b), []); // ์š”์†Œ๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒฝ์šฐ const result = useMemo(() => calc(a, b), [item);
 
useMemo์˜ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋Š” ์œ„์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. useMemo๋Š” ๋‘ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ›๋Š”๋ฐ ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋Š” ์ฝœ๋ฐฑํ•จ์ˆ˜, ๋‘ ๋ฒˆ์งธ ์ธ์ž๋Š” ์˜์กด์„ฑ ๋ฐฐ์—ด(Array dependencies)์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋ฐฐ์—ด์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ธ์ž์— ๋“ค์–ด๊ฐ€๋Š” ์ฝœ๋ฐฑํ•จ์ˆ˜์˜ ๊ฒฐ๊ด๊ฐ’์ด useMemo์˜ ๋ฆฌํ„ด๊ฐ’์ด ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒฐ๊ด๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ ์ธ์ž์˜ ์˜์กด์„ฑ ๋ฐฐ์—ด์— ์š”์†Œ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ์—๋Š” ์˜์กด์„ฑ ๋ฐฐ์—ด์˜ ์ „๋‹ฌ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋  ๋•Œ๋งŒ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š”๋ฐ, ์ด๋•Œ ๋ Œ๋”๋ง ๊ณผ์ •์—์„œ ๋ฐฐ์—ด ์•ˆ์˜ ์š”์†Œ item์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ์—๋งŒ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋™์ž‘ ์‹œ์ผœ์„œ ๋ฉ”๋ชจ์ด์ œ์ด์…˜(Memoization)๋œ ๊ฐ’๋งŒ ๋‹ค์‹œ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ useMemo๋Š” ์˜์กด์„ฑ ๋ฐฐ์—ด์—์„œ ์ „๋‹ฌํ•˜๋Š” ๊ฐ’์˜ ๋ณ€๊ฒฝ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ค‘๋ณต ์—ฐ์‚ฐ์„ ์ตœ์†Œํ™” ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปดํฌ๋„ŒํŠธ์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๊ธฐ๋ฒ•์€ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด ๋‘๊ณ  ์ด์ „ ๋ Œ๋”๋ง์—์„œ ๊ณ„์‚ฐํ•œ ๊ฐ’๊ณผ ํ˜„์žฌ ๋ Œ๋”๋ง์—์„œ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ, ์ค‘๋ณต ์—ฐ์‚ฐ์„ ํ•  ํ•„์š” ์—†์ด ์ €์žฅํ•ด๋‘” ๊ฐ’์„ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
 
๋‘ ๋ฒˆ์งธ ์ธ์ž์—๋Š” ์œ„์™€ ๊ฐ™์ด ๋นˆ ๋ฐฐ์—ด ๋˜๋Š” ์š”์†Œ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋นˆ ๋ฐฐ์—ด์ด ๋“ค์–ด๊ฐ€๋ฉด ์ตœ์ดˆ๋กœ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‹คํ–‰๋˜์—ˆ์„ ๋•Œ๋งŒ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๊ณ  ์ดํ›„์—๋Š” ๊ณ„์†ํ•ด์„œ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๋œ ๊ฐ’์„ ๊ฐ€์ ธ์™€์„œ ์žฌ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ ์ธ์ž์— ์š”์†Œ๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค๋ฉด ํ•ด๋‹น ์š”์†Œ๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ๋•Œ๋งŒ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜์—ฌ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๋œ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๋‹ค์‹œ ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ํ•ด์ค๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ useMemo๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ถ๊ทน์ ์ธ ์ด์œ ๋Š” ๋ฐ˜๋ณต๋˜๋Š” ์—ฐ์‚ฐ์„ ํ”ผํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.
 
๋ฆฌ์•กํŠธ ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋Š” useMemo์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์œ„์™€ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ์œผ๋ฉฐ, useMemo๋กœ ์ „๋‹ฌ๋œ ํ•จ์ˆ˜๋Š” ๋ Œ๋”๋ง ์ค‘์—๋งŒ ์‹คํ–‰๋˜๋ฉฐ, useMemo๋Š” ๋ฉ”๋ชจ์ด์ œ์ด์…˜๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค๊ณ  ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด useMemo์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ์™€ ํ•จ๊ป˜ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
 
useMemo๋Š” ์œ„์™€ ๊ฐ™์ด ๋‘ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋Š” ๋ฉ”๋ชจ์ด์ œ์ด์…˜ํ•  ๊ฐ’์„ ๊ณ„์‚ฐํ•ด ์ค„ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ, ๋‘ ๋ฒˆ์งธ ์ธ์ž๋Š” ์˜์กด์„ฑ ๋ฐฐ์—ด(Array dependencies)์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋ฐฐ์—ด์ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. useMemo๋Š” ์˜์กด์„ฑ ๋ฐฐ์—ด์˜ ์ „๋‹ฌ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋  ๋•Œ๋งŒ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š”๋ฐ, ์ด๋•Œ ๋ Œ๋”๋ง ๊ณผ์ •์—์„œ ๋ฐฐ์—ด ์•ˆ์˜ ์š”์†Œ item1๊ณผ item2์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ์—๋งŒ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋™์ž‘ ์‹œ์ผœ์„œ ๋ฉ”๋ชจ์ด์ œ์ด์…˜(Memoization)๋œ ๊ฐ’๋งŒ ๋‹ค์‹œ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งŒ์•ฝ ์˜์กด์„ฑ ๋ฐฐ์—ด์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ๋ Œ๋”๋ง ์ „์— ์ €์žฅ๋œ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์žฌ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, useMemo๋Š” ์˜์กด์„ฑ ๋ฐฐ์—ด์—์„œ ์ „๋‹ฌํ•˜๋Š” ๊ฐ’์˜ ๋ณ€๊ฒฝ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ค‘๋ณต ์—ฐ์‚ฐ์„ ์ตœ์†Œํ™” ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
์ •๋ฆฌํ•˜๋ฉด, ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๊ธฐ๋ฒ•์€ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด ๋‘๊ณ  ์ด์ „ ๋ Œ๋”๋ง์—์„œ ๊ณ„์‚ฐํ•œ ๊ฐ’๊ณผ ํ˜„์žฌ ๋ Œ๋”๋ง์—์„œ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ, ์ค‘๋ณต ์—ฐ์‚ฐ์„ ํ•  ํ•„์š” ์—†์ด ์ €์žฅํ•ด๋‘” ๊ฐ’์„ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

6.2.1 useEffect ์™€ useMemo์˜ ์ฐจ์ด

 
useMemo๋Š” ์ด์ „ ์ฑ•ํ„ฐ 3์—์„œ ๋‹ค๋ค˜๋˜ useEffect์™€ ๋น„์Šทํ•˜๊ฒŒ ์˜์กด์„ฑ ๋ฐฐ์—ด(Array dependencies)์— ์ „๋‹ฌ๋œ ๊ฐ’์˜ ๋ณ€๊ฒฝ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด ๋‘ ๊ฐ€์ง€ Hook์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ๋ Œ๋”๋ง ๊ณผ์ • ์ค‘์˜ ๋™์ž‘ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.
useEffect๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๋ Œ๋”๋ง์ด ์™„๋ฃŒ๋œ ์ดํ›„์— ์‹คํ–‰๋˜๋ฉฐ, ๋ Œ๋”๋ง ํ›„ ์ƒํƒœ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ์„ ๋•Œ๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ๋ Œ๋”๋ง์„ ๋ฐฉ์ง€ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
์ด์™€ ๋‹ฌ๋ฆฌ useMemo๋Š” ๋ Œ๋”๋ง ๊ณผ์ • ์ค‘์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ Œ๋”๋ง ๊ณผ์ • ์ค‘์— ์˜์กด์„ฑ ๋ฐฐ์—ด์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ ํ›„, ๊ฐ’์ด ๋ณ€๊ฒฝ ๋˜์—ˆ๋‹ค๋ฉด ์ด์ „์— ์ €์žฅํ•œ ๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ ๊ฐ’์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋งŒ ๋ฆฌ๋ Œ๋”๋ง ํ•ด์ค๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— useMemo๋Š” ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ๊ณ„์‚ฐ์„ ์ตœ์†Œํ™” ์‹œํ‚ค๊ณ , ๋ฆฌ๋ Œ๋”๋ง์„ ๋ง‰์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ๋•Œ useMemo Hook์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.