React

[React] ์„ฑ๋Šฅ ์ตœ์ ํ™”ํ•˜๋Š” ํ›… useMemo

hyonie 2025. 4. 9. 09:52

๋ฆฌ์•กํŠธ๋ฅผ ์“ฐ๋‹ค ๋ณด๋ฉด ๋ฆฌ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ํ•จ์ˆ˜๋‚˜ ๊ณ„์‚ฐ์ด ๋‹ค์‹œ ์‹คํ–‰๋˜๋Š” ํ˜„์ƒ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ ์ด์Šˆ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํŠนํžˆ .filter() ๋‚˜ .map(), .sort()์ฒ˜๋Ÿผ ๋ฐ˜๋ณต ๊ณ„์‚ฐ์ด ๋งŽ์€ ์—ฐ์‚ฐ์€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ฐ˜๋ณต๋˜๋ฉด ๋ฆฌ์•กํŠธ์˜ ํผํฌ๋จผ์Šค๋ฅผ ๊ฐ‰์•„๋จน์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋“ฑ์žฅํ•˜๋Š” ๊ฒŒ ๋ฐ”๋กœ โญuseMemo ์ž…๋‹ˆ๋‹ค.

์‹ค๋ฌด์—์„œ ์ž์ฃผ ์“ฐ์ด๋Š” useMemo์˜ ๊ฐœ๋…๊ณผ ์˜ˆ์ œ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์“ฐ์ด๋Š”์ง€ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ“‚ ๋ชฉ์ฐจ

     


    useMemo๋ž€?

    const memoizedValue = useMemo(() => {
      return ๊ณ„์‚ฐ์‹;
    }, [์˜์กด์„ฑ])

    ๐Ÿ’ก ํ•œ๋งˆ๋””๋กœ ๋งํ•˜๋ฉด?

    "์˜์กด์„ฑ ๊ฐ’์ด ๋ฐ”๋€”๋•Œ๋งŒ ๋‹ค์‹œ ๊ณ„์‚ฐ๋˜๋Š” ๊ฐ’" ์„ ๋งŒ๋“ค์–ด์„œ, ๋ถˆํ•„์š”ํ•œ ๊ณ„์‚ฐ์„ ๋ง‰์•„์ฃผ๋Š” ํ›…

     

    ๐Ÿ” ์™œ์จ์•ผํ• ๊นŒ?

    ๋ฆฌ์•กํŠธ๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง๋  ๋•Œ๋งˆ๋‹ค ๋‚ด๋ถ€ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋Š”๋ฐ, ์—ฐ์‚ฐ(filter, map, sort ๋“ฑ..)์„ ๋งค๋ฒˆ ์‹คํ–‰ํ•˜๋ฉด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.

    ๊ทธ๋ž˜์„œ ๊ฐ’์„ ๊ธฐ์–ตํ•ด๋‘๊ณ , ์˜์กด์„ฑ์ด ๋ฐ”๋€” ๋•Œ๋งŒ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋„๋ก ํ•ด์ฃผ๋Š”๊ฒŒ useMemo์ž…๋‹ˆ๋‹ค.

     

     

    ์˜ˆ์ œ ์ฝ”๋“œ

    const categoryList = [
     {id: 1, name:"์…€ํ”„๊ฐœํ†ต", type: "normal"},
     {id: 2, name:"๋Œ€๋ฆฌ์ ๊ฐœํ†ต", type: "agent"},
    ]
    
    const filteredCategories = useMemo(() => {
    // ํ†ต์‹ ์‚ฌ๊ฐ€ KT์ธ ๊ฒฝ์šฐ์—๋งŒ "normal" ํƒ€์ž… ์นดํ…Œ๊ณ ๋ฆฌ๋งŒ ํ•„ํ„ฐ๋ง
     return selectedCarrier == "KT"
       ? categoryList.filter((category) => category.type === "normal")
       : categoryList;
    }, [selectedCarrier, categoryList]);

    ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ํ†ต์‹ ์‚ฌ(`selectedCarrier`)๊ฐ€ "KT"์ผ ๊ฒฝ์šฐ์—๋งŒ ํŠน์ • ์นดํ…Œ๊ณ ๋ฆฌ (`type == "normal"`)๋งŒ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    ์ด๋Ÿด๋•Œ, .filter()๋ฅผ ๋งค๋ฒˆ ์‹คํ–‰ํ•˜๋ฉด ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์œผ๋‹ˆ, ์˜ˆ์ œ์ฝ”๋“œ ์ฒ˜๋Ÿผ useMemo๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ Œ๋”๋ง ์ตœ์ ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

     

    ๊ทธ๋ž˜์„œ useMemo๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด:

    • ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์„ ์ค„์ด๊ณ  ์˜์กด์„ฑ(selectedCarrier, categoryList)์ด ๋ฐ”๋€” ๋•Œ๋งŒ ๊ณ„์‚ฐ
    • ๊ทธ ์™ธ์—๋Š” ์บ์‹œ๋œ ๊ฒฐ๊ณผ ์‚ฌ์šฉ