728x90
๋ฐ˜์‘ํ˜•

React.memo 2

React] Hook : useCallback

useCallback useMemo์™€ ๋น„์Šทํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„ ๋ฐ ์„ฑ๋Šฅ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” hook์ž…๋‹ˆ๋‹ค. useMemo๋Š” ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๊ณ  ํ•˜๋ฉด, useCallback์€ ํ•จ์ˆ˜๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ๋Š” ์ฃผ๋กœ ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋ณด๋‹ค๋Š” ํ•จ์ˆ˜ ์ƒ์„ฑ ์ž์ฒด์˜ ๋น„์šฉ์ด ํด ๋•Œ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์ž์‹ ์ปดํฌ๋„ŒํŠธ์— ํ•จ์ˆ˜๋ฅผ props๋กœ ๋„˜๊ธธ ๋•Œ๋Š” ํ•ด๋‹น ํ•จ์ˆ˜๋Š” useCallback์œผ๋กœ ๊ฐ์‹ธ์•ผํ•œ๋‹ค. const ๋ณ€์ˆ˜ = useCallback(()⇒{}), [deps]); deps์— ์˜์กด์„ฑ์„ ๋ถ€์—ฌํ•˜์—ฌ ํ•ด๋‹น ๊ฐ’์ด ๋ณ€ํ•  ๋•Œ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด์ „์— ์‚ฌ์šฉํ–ˆ๋˜ useEffect์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค onClickํ•จ์ˆ˜์— useCallback์„ ์คŒ์œผ๋กœ์จ ๋ฆฌ๋ Œ๋”๋ง ๋  ๋•Œ, ํ•จ์ˆ˜๊ฐ€ ๋‹ค์‹œ ์ •์˜๋˜๋Š” ๊ฒƒ์„ ..

Front-End/React 2023.06.22

React] Hook : useMemo

useMemo ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด, ๋ฆฌ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ์ „์ฒด๊ฐ€ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆํ•„์š”ํ•œ ๋ถ€๋ถ„๋„ ๊ณ„์† ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ ๊ฐ’์ด ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋ฆฌ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ, Hook์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์ €์žฅํ•ด ๋†“๊ณ , ํ•„์š”ํ•  ๋•Œ๋งŒ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. const ๋ณ€์ˆ˜ = useMemo(()⇒{}), [deps]); deps์— ์˜์กด์„ฑ์„ ๋ถ€์—ฌํ•˜์—ฌ ํ•ด๋‹น ๊ฐ’์ด ๋ณ€ํ•  ๋•Œ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด์ „์— ์‚ฌ์šฉํ–ˆ๋˜ useEffect์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ HTML ์‚ฝ์ž… ๋ฏธ๋ฆฌ๋ณด๊ธฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค ๋ฐ”๋‹ฅ์—์„œ ์ฐ์€ memo๋Š” inputํƒœ๊ทธ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ฐํžˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , useMemo์•ˆ์— ์žˆ๋Š”๋ฐ test๋Š” ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ, setClick์œผ๋กœ ์ธํ•ด click๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งŒ ์ฐํžˆ๋Š” ๊ฒƒ์„ ํ™•์ธ..

Front-End/React 2023.06.20
728x90
๋ฐ˜์‘ํ˜•