์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด ์ฐ์ฐ๋ ๊ฐ์ 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๋ฅผ ์ด์ฉํ ์ฑ๋ฅ ์ต์ ํ// App.js์ count๋ง ์์
const count = useMemo(() => countActiveUsers(users), [users]);
โ ๋ถํ์ํ ํธ์ถ์ด ๋ฐ์ํ์ง ์๋๋ค.

์ฐธ๊ณ