728x90
๋ฐ˜์‘ํ˜•

์„ฑ๋Šฅ์ตœ์ ํ™” 3

React] Hook : useCallback & useMemo ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ๋ ๊นŒ?

useCallback & useMemo ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ๋ ๊นŒ? ๋‘ ๊ฐœ์˜ hook์— ๋Œ€ํ•ด์„œ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‘ hook์€ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ๋˜๋‹ˆ๊น ํ•จ์ˆ˜๋‚˜ ๊ฒฐ๊ณผ๊ฐ’์ด ์žˆ๋Š” ๊ฑฐ์— ์ „๋ถ€ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์ง€ ์•Š์„๊นŒ??๋ผ๋Š” ์ƒ๊ฐ์„ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ƒ๊ฐ์— ์„ฑ๋Šฅ ์ข‹์•„์ง€๊ฒ ์ง€ ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ๋˜๋ ค ์„ฑ๋Šฅ์ €ํ•˜๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒ๋ฉด ๊ฒฐ๊ตญ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ํ•˜๋Š”๋ฐ์—๋„ ๊ทธ๋งŒํ•œ ๋น„์šฉ์ด ๋“ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์–ธ์ œ ์“ฐ๊ณ , ์–ธ์ œ ์“ฐ๋ฉด์•ˆ์ข‹์€์ง€์— ๋Œ€ํ•ด ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. โŒ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ณต์žกํ•˜์ง€ ์•Š์€ ์—ฐ์‚ฐ์— ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์€ ์˜คํžˆ๋ ค ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค. onClick์ด๋ฒคํŠธ๋กœ setStateํ•ด์ฃผ๋Š” ๊ฒฝ์šฐ ๊ฐ™์ด ๋‹จ์ˆœํ•œ ์ƒํ™ฉ์ด๋ผ๋ฉด, ๋ฆฌ๋ Œ๋”๋ง ๋œ๋‹ค๊ณ  ํ•˜๋”๋ผ๊ณ  ๋‹ค์‹œ ๊ทธ๋ ค์ฃผ๋Š” ํŽธํžˆ ํ›จ์”ฌ ๋‚ซ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. React์—์„œ๋„ ..

Front-End/React 2023.06.29

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
๋ฐ˜์‘ํ˜•