자바스크립트에서의 Nullish Coalescing을 활용한 무한 스크롤 처리 방법

무한 스크롤은 웹 페이지에서 추가적인 콘텐츠를 불러오는 기능을 말합니다. 사용자가 스크롤을 내릴 때마다 새로운 데이터를 동적으로 로드하여 페이지를 끝없이 확장시킬 수 있습니다. 이를 통해 사용자는 페이지 전체를 로드하지 않아도 콘텐츠를 계속해서 볼 수 있어 UX를 향상시킬 수 있습니다.

무한 스크롤 처리를 위해서는 이벤트 리스너를 등록하고 스크롤 위치를 감지하여 추가 데이터를 요청하는 로직을 구현해야 합니다. 그러나 무한 스크롤이 일어날 때마다 데이터를 요청하지 않고, 이미 요청된 데이터가 있는 경우 해당 데이터를 사용할 수 있다면 불필요한 요청을 줄일 수 있습니다.

이때 자바스크립트에서 Nullish Coalescing 연산자를 활용하면 효율적인 코드를 작성할 수 있습니다. Nullish Coalescing 연산자(??)는 왼쪽 피연산자가 null 또는 undefined인 경우 오른쪽 피연산자를 반환합니다.

다음은 Nullish Coalescing 연산자를 활용한 무한 스크롤 처리 방법의 예시입니다:

let pageIndex = 0; // 현재 페이지 인덱스
let isLoading = false; // 데이터를 로딩 중인지 여부

function scrollHandler() {
  // 스크롤 위치를 감지하는 로직
  const scrollTop = document.documentElement.scrollTop;
  const windowHeight = window.innerHeight;
  const scrollHeight = document.documentElement.scrollHeight;

  // 스크롤이 페이지 하단에 도달하면서 로딩 중이 아닌 경우 추가 데이터 요청
  if (scrollTop + windowHeight > scrollHeight - 200 && !isLoading) {
    isLoading = true;
    
    fetch(`https://api.example.com/data?page=${pageIndex}`)
      .then((response) => response.json())
      .then((data) => {
        // 받아온 데이터를 처리하는 로직
        
        // pageIndex 증가
        pageIndex++;
        
        // 로딩 상태 초기화
        isLoading = false;
      })
      .catch((error) => {
        console.error('데이터 요청 중 오류 발생:', error);
        isLoading = false;
      });
  }
}

// 스크롤 이벤트 리스너 등록
window.addEventListener('scroll', scrollHandler);

위 예시 코드에서는 스크롤 이벤트를 감지하여 스크롤 위치를 확인하고, 페이지 하단에 도달했을 때 새로운 데이터를 요청합니다. 이때 isLoading 변수를 활용하여 중복 요청을 방지하고, Nullish Coalescing 연산자를 사용하여 이미 요청된 데이터를 사용할 수 있는 경우 추가 요청을 하지 않습니다.

무한 스크롤 처리를 구현할 때 Nullish Coalescing 연산자를 활용하면 불필요한 요청을 줄일 수 있어서 자원을 절약하고 웹 페이지의 성능을 향상시킬 수 있습니다.

#webdevelopment #javascript