์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด ์ฐ์ฐ๋ ๊ฐ์ 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]);
โ ๋ถํ์ํ ํธ์ถ์ด ๋ฐ์ํ์ง ์๋๋ค.
์ฐธ๊ณ