[231012] useMemo , useCallback
useMemo , useCallback
- ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ํ
ํจ์
- ๋ ๋ค ๋ฉ๋ชจ์ด์ ์ด์
์ ํ๊ณ ์๋ก ๊ณ์ฐํ๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ ์ปดํฌ๋ํธ์ ๋ ๋๋ง ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ๋์์ ์ค๋ค.
- ๋จ๋ฐํ๋ฉด ์ฑ๋ฅ์ด ๋จ์ด์ง, ๋ฉ๋ชจ๋ฆฌ ํ ๋นํ๊ธฐ ๋๋ฌธ์ (์ฐธ๊ณ : https://velog.io/@lky5697/stop-using-usememo-now)
useMemo
- ๊ฐ์ ๋ฉ๋ชจ์ด์ ์ด์
(์์๊ฐ)
- ๋ณต์กํ ๋ฉ๋ชจ ์ฌ๋ฌ๋ฒ ํ์ง ์๊ธฐ ์ํด ์ฌ์ฉ
import { useMemo } from "react"
function MyComponent({ data }) {
// data๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง expensiveCalculation ํจ์๋ฅผ ๋ค์ ์คํ
const result = useMemo(() => {
return expensiveCalculation(data)
}, [data])
return <div>{result}</div>
}
useCallback
- ์ฝ๋ฐฑํจ์ (์ฐธ์กฐ๊ฐ์ ๋ํ ๊ฒ)
- useCallback ์ ์ฐ๋๋ผ๋ ๋ถ๋ชจ๊ฐ ๋ฆฌ๋ ๋๋ง๋๋ฉด ์์๋ ๋ฆฌ๋ ๋๋ง ๋๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก, ์์ ์ปดํฌ๋ํธ๋ฅผ react memo ๋ก ๋ฐ๊ฟ์ผ ์์์ปดํฌ๋ํธ๊ฐ useCallback์ ์ฌ์ฉํ๊ณ ์๋ ์ฝ๋ฐฑํจ์๋ ๋ฉ๋ชจ์ด์ ์ด์
์ด ์ ๋๋ก ๋จ
import { useCallback } from "react"
function MyComponent({ onClick }) {
const handleClick = useCallback(() => {
// ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ
}, []) // ๋น ์์กด์ฑ ๋ฐฐ์ด: ํธ๋ค๋ฌ๋ ํญ์ ๋์ผํ ํจ์๋ฅผ ๋ฐํ
return <button onClick={handleClick}>Click Me</button>
}
Leave a comment