<aside> 💡 2022.12.05. 김관경

</aside>

React Hook useCallback received a function whose dependencies are unknown. Pass an inline function instead.

const moveSectionScroll = useCallback(
    throttle((e: WheelEvent) => {
      e.preventDefault();
      // 아래 스크롤
      if (e.deltaY > 0 && pageRef.current < maxPage) {
        pageRef.current += 1;
      }
      if (e.deltaY < 0 && pageRef.current > 0) {
        pageRef.current -= 1;
      }

      window.scrollTo(0, pageRef.current * window.innerHeight);
    }, 500),
    [maxPage],
  );

문제 분석

useMemo(() => foo, [foo]);
useCallback((bar) => foo(bar), [foo]);
const moveSectionScroll = useCallback(
  (callback: CallbackFunc<any[]>, waitingTime: number) => (...args: any[]) => {
    if (isWaiting) {
      callback(...args);
      isWaiting = false;
      setTimeout(() => {
        isWaiting = true;
      }, waitingTime);
    }
  }
);

문제 해결

const moveSectionScroll = useMemo(
    () => throttle((e: WheelEvent) => {
      e.preventDefault();
      // 아래 스크롤
      if (e.deltaY > 0 && pageRef.current < maxPage) {
        pageRef.current += 1;
      }
      if (e.deltaY < 0 && pageRef.current > 0) {
        pageRef.current -= 1;
      }

      window.scrollTo(0, pageRef.current * window.innerHeight);
    }, 500),
    [maxPage],
  );

/ 참고자료

React Hook useCallback received a function whose dependencies are unknown. Pass an inline function instead