• dmchoi
  • [React] useCallback

    2022년 03월 08일

    useCallback은 useMemo와 비슷하게 메모이제이션 기법으로 컴포넌트 성능을 최적화 시켜주는 React hook입니다.

    인자로 전달한 콜백 함수 자체를 memoization 해줍니다.

    useCallback의 구조

    useCallback은 두 개의 인자를 받습니다.

    첫 번째 인자는 메모이제이션할 콜백 함수를 받고, 두 번째 인자는 배열을 받습니다. 의존성 배열(dependency array)이라고도 부릅니다. 배열 안의 요소가 업데이트될 때만 메모이제이션 되는 함수를 업데이트합니다.

    만약 빈 배열이 들어간다면, 컴포넌트가 맨 처음 mount 될 때에만 값을 계산하고 이후에는 메모이제이션된 값을 가져와서 사용합니다.


    사용 방법은 메모이제이션할 함수를 useCallback으로 감싸주면 됩니다.

    const calculate = useCallback((num) => {
    	return num + 1
    }, [item])

    이제 calculate라는 변수는 메모이제이션된 함수를 갖게 되는 것입니다.

    함수가 다시 필요할 때마다 메모리에서 가져와서 재사용하게 됩니다.


    아래의 일반적인 함수형 컴포넌트에서의 렌더링 과정은 다음과 같습니다.
    function App() {
        const calculate = (num) => {
    	    return num + 1
    	};
    	return <div>...</div>
    }

    App 함수 호출 -> 모든 내부 변수 초기화


    useCallback을 사용하게 되면 렌더링 과정은 다음과 같습니다.

    function App() {
    	const calculate = useCallback((num) => {
    	    return num + 1
        }, [item])
    	return <div>{value}</div>
    }

    App 함수 호출 -> 메모이제이션된 함수를 재사용

    컴포넌트가 다시 랜더링 되더라도 calculate가 초기화 되는 것을 막을 수 있습니다.

    Tags
      © 2021 dmchoi, Powered By Gatsby.