Home useCallback
Post
Cancel

useCallback

๐Ÿ“Œ 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 ์„ ์‚ฌ์šฉ ํ•จ์œผ๋กœ์จ, ๋ฐ”๋กœ ์ด๋ค„๋‚ผ์ˆ˜ ์žˆ๋Š” ๋ˆˆ์— ๋„๋Š” ์ตœ์ ํ™”๋Š” ์—†์Œโ€ฆ

๊ทธ๋ž˜์„œ ์–ด๋–จ๋•Œ ์‚ฌ์šฉํ•ด์•ผ๋ ์ง€ ๊ฐ์ง€ ์ž˜ ์˜ค์ง€์•Š๋Š”๋‹ค..

This post is licensed under CC BY 4.0 by the author.

MSW

useMemo