๐Ÿ”ซ React_06 useMemo

Boriยท2022๋…„ 11์›” 7์ผ
1

React

๋ชฉ๋ก ๋ณด๊ธฐ
6/8
post-thumbnail

๐ŸŽฎ useMemo

์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์—ฐ์‚ฐ๋œ ๊ฐ’์„ useMemo๋ผ๋Š” Hook์„ ์‚ฌ์šฉํ•˜์—ฌ ์žฌ์‚ฌ์šฉ ํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ

๋จผ์ €, App ์ปดํฌ๋„ŒํŠธ์— countActiveUsers ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด active ๊ฐ’์ด true์ธ ์‚ฌ์šฉ์ž์˜ ์ˆ˜๋ฅผ ์„ธ์–ด ํ™”๋ฉด์— ๋ Œ๋”๋ง ํ•ด๋ณด์ž.

// App.js์˜ ์ฝ”๋“œ ์ผ๋ถ€
import React, { useRef, useState } from 'react';
import CreateUser from './CreateUser';
import UserList from './UserList';

function countActiveUsers(users) {
  console.log('ํ™œ์„ฑ ์ƒ์š”์ž ์ˆ˜๋ฅผ ์„ธ๋Š” ์ค‘...');
  return users.filter((user) => user.active).length;
}

function App() {
  ...
  
  const count = countActiveUsers(users);
    
  return (
    <>
      <CreateUser
        username={username}
        email={email}
        onChange={onChange}
        onCreate={onCreate}
      />
      <UserList users={users} onRemove={onRemove} onToggle={onToggle} />
      <div>ํ™œ์„ฑ์‚ฌ์šฉ์ž ์ˆ˜: {count}</div>
    </>
  );
}

๊ณ„์ • ์ด๋ฆ„์„ ํด๋ฆญํ•˜์—ฌ active ๊ฐ’์ด true๋กœ ๋ณ€ํ•˜๋ฉด์„œ ํ™œ์„ฑ ์‚ฌ์šฉ์ž ์ˆ˜๊ฐ€ ์—…๋ฐ์ดํŠธ ๋œ๋‹ค.

๐ŸŽฒ ๋ฌธ์ œ์ 

  • input ๊ฐ’์ด ๋ฐ”๋€” ๋•Œ์—๋„ countActiveUsers ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค
  • ํ™œ์„ฑ ์‚ฌ์šฉ์ž ์ˆ˜๋ฅผ ์„ธ๋Š” ๊ฑด users์— ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ๋งŒ ์„ธ์•ผํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ input ๊ฐ’์ด ๋ฐ”๋€” ๋•Œ์—๋„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง๋˜๋Š” ๊ฒƒ์€ ๋ถˆํ•„์š”ํ•œ ํ˜ธ์ถœ๋กœ ์ธํ•ด ์ž์›์ด ๋‚ญ๋น„๋œ๋‹ค.
    โ‡’ ์„ฑ๋Šฅ์  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ

๐ŸŽฒ useMemo๋ฅผ ์ด์šฉํ•œ ์„ฑ๋Šฅ ์ตœ์ ํ™”

  • Memo๋Š” "memoized"๋ฅผ ์˜๋ฏธ
    โ‡’ ์ด ์ „์— ๊ณ„์‚ฐํ•œ ๊ฐ’์„ ์žฌ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์˜๋ฏธ
// App.js์˜ count๋งŒ ์ˆ˜์ •
const count = useMemo(() => countActiveUsers(users), [users]);

useMemo(ํ•จ์ˆ˜, deps ๋ฐฐ์—ด)

  • ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ : ์–ด๋–ป๊ฒŒ ์—ฐ์‚ฐํ• ์ง€ ์ •์˜ํ•˜๋Š” ํ•จ์ˆ˜
  • ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ : deps ๋ฐฐ์—ด
    • ์ด ๋ฐฐ์—ด ์•ˆ์— ๋„ฃ์€ ๋‚ด์šฉ์ด ๋ฐ”๋€Œ๋ฉด, ๋“ฑ๋กํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ฐ’์„ ์—ฐ์‚ฐ.
    • ๋‚ด์šฉ์ด ๋ฐ”๋€Œ์ง€ ์•Š์œผ๋ฉด ์ด ์ „์— ์—ฐ์‚ฐํ•œ ๊ฐ’์„ ์žฌ์‚ฌ์šฉ

โ‡’ ๋ถˆํ•„์š”ํ•œ ํ˜ธ์ถœ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ฐธ๊ณ 

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