Skip to content

Commit

Permalink
수정: useMemo함수 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
lshyun955 committed Jan 2, 2025
1 parent 008b1a9 commit 6143ef3
Showing 1 changed file with 18 additions and 3 deletions.
21 changes: 18 additions & 3 deletions src/@lib/hooks/useMemo.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,27 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import { DependencyList } from "react";
import { shallowEquals } from "../equalities";
import { useRef } from "./useRef";

export function useMemo<T>(
factory: () => T,
_deps: DependencyList,
_equals = shallowEquals,
): T {
// 직접 작성한 useRef를 통해서 만들어보세요.
return factory();
// 직접 작성한 useRef를 통해서 만들어보세요! 이게 제일 중요합니다.
// 1. 이전 의존성과 결과를 저장할 ref 생성
const prevRef = useRef<{
deps: DependencyList | null;
memoizedState: T;
} | null>(null);

// 2. 현재 의존성과 이전 의존성 비교
if (!prevRef.current || !_equals(prevRef.current?.deps, _deps)) {
// 3. 의존성이 변경된 경우 factory 함수 실행 및 결과 저장
prevRef.current = {
deps: _deps,
memoizedState: factory(),
};
}
// 4. 메모이제이션된 값 반환
return prevRef.current?.memoizedState;
}

0 comments on commit 6143ef3

Please sign in to comment.