• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

useEffect()의 window에 관한 콘솔은 계속 찍히는 이유가 무었인가요?

23.07.03 19:05 작성 조회수 222

0

  useEffect(() => {
    function onScroll() {
      console.log(
        window.scrollY,
        document.documentElement.clientHeight,
        document.documentElement.scrollHeight
      );
      if (
        window.scrollY + document.documentElement.clientHeight ===
        document.documentElement.scrollHeight
      )
        if (hasMorePost) {
          const dummypost = generateDummpyPost(10);
          dispatch(loadPost({ dummypost }));
        }
    }
    window.addEventListener("scroll", onScroll);
    return () => {
      window.removeEventListener("scroll", onScroll);
    };
  }, [hasMorePost]);

useEffect를 이런 식으로 작성하면 hasMorePost의 값이 변경되기 전까지 useEffect는 처음 단한번만 실행된후 그후에는실행되지 않아야 하는데 왜 계속 console.log가 실행되는건가요?

답변 1

답변을 작성해보세요.

0

useEffect는 한번만 실행된 게 맞고요(hasMorePost가 바뀌기 전까지),

window에 등록된 이벤트리스너가 계속 실행되는 겁니다.