인프런 커뮤니티 질문&답변

i1004gy님의 프로필 이미지

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

인피니트 스크롤링 적용하기

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

23.07.03 19:05 작성

·

290

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

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2023. 07. 03. 19:29

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

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

i1004gy님의 프로필 이미지

작성한 질문수

질문하기