๐ useCallback
โ๏ธ ํจ์ ์ฌ์ฌ์ฉ
์ด ํจ์๋ค์ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง ๋ ๋ ๋ง๋ค ์๋ก ๋ง๋ค์ด์ง๋ค. ํจ์๋ฅผ ์ ์ธํ๋ ๊ฒ ์์ฒด๋ ์ฌ์ค ๋ฉ๋ชจ๋ฆฌ๋, CPU ๋ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฐจ์ง ํ๋ ์์ ์ ์๋๊ธฐ ๋๋ฌธ์ ํจ์๋ฅผ ์๋ก ์ ์ธํ๋ค๊ณ ํด์ ๊ทธ ์์ฒด ๋ง์ผ๋ก ํฐ ๋ถํ๊ฐ ์๊ธธ์ผ์ ์์ง๋ง, ํ๋ฒ ๋ง๋ ํจ์๋ฅผ ํ์ํ ๋๋ง ์๋ก ๋ง๋ค๊ณ ์ฌ์ฌ์ฉํ๋ ๊ฒ์ ์ฌ์ ํ ์ค์ํจ
์ด์ ์ useMemo์์ ์ฌ์ฉํ๋ ์์ ๋ฅผ ๋ค๊ณ ์์ ์ผ๋ถ๋ถ๋ง ๋ฐ๊ฟ์ฃผ๋ ค๊ณ ํจ
https://moonjh9392.github.io/posts/useMemo/
onToggle function์ ๋ฐ๊ฟ ์์
1
2
3
4
5
6
7
8
9
10
const onToggle = useCallback(
(id) => {
setUsers(
users.map((user) =>
user.id === id ? { ...user, active: !user.active } : user
)
);
},
[users]
);
์ฃผ์ ํ ์ ์, ํจ์ ์์์ ์ฌ์ฉํ๋ ์ํ ํน์ props ๊ฐ ์๋ค๋ฉด ๊ผญ, deps ๋ฐฐ์ด์์ ํฌํจ์์ผ์ผ ๋๋ค๋ ๊ฒ ์ ๋๋ค. ๋ง์ฝ์ deps ๋ฐฐ์ด ์์ ํจ์์์ ์ฌ์ฉํ๋ ๊ฐ์ ๋ฃ์ง ์๊ฒ ๋๋ค๋ฉด, ํจ์ ๋ด์์ ํด๋น ๊ฐ๋ค์ ์ฐธ์กฐํ ๋ ๊ฐ์ฅ ์ต์ ๊ฐ์ ์ฐธ์กฐ ํ ๊ฒ์ด๋ผ๊ณ ๋ณด์ฅ ํ ์ ์์. props ๋ก ๋ฐ์์จ ํจ์๊ฐ ์๋ค๋ฉด, ์ด ๋ํ deps ์ ๋ฃ์ด์ฃผ์ด์ผ ํจ
useCallback ์ ์ฌ์ฉ ํจ์ผ๋ก์จ, ๋ฐ๋ก ์ด๋ค๋ผ์ ์๋ ๋์ ๋๋ ์ต์ ํ๋ ์์โฆ
๊ทธ๋์ ์ด๋จ๋ ์ฌ์ฉํด์ผ๋ ์ง ๊ฐ์ง ์ ์ค์ง์๋๋ค..