[javascript] Svelte에서 무한 스크롤(infinite scroll)을 구현하는 방법은 어떻게 되나요?
- 먼저, Svelte 컴포넌트에서 스크롤 이벤트를 감지하고 처리할 수 있도록
on:scroll
디렉티브를 사용합니다.
<script>
let data = []; // 로드할 데이터 배열
let loading = false; // 데이터를 로드 중인지 여부를 나타내는 변수
async function loadData() {
// 데이터를 로드하기 위한 비동기 함수
loading = true;
// 데이터를 가져오는 비동기 작업 수행
// ...
loading = false;
}
function handleScroll(event) {
// 스크롤 이벤트 처리 코드
const { scrollTop, clientHeight, scrollHeight } = event.currentTarget;
if (scrollTop + clientHeight >= scrollHeight) {
loadData();
}
}
</script>
<div on:scroll={handleScroll}>
<!-- 무한 스크롤로 표시될 내용 -->
</div>
-
data
배열 변수를 사용하여 무한 스크롤로 로드할 데이터를 관리합니다. 로드 중에는loading
변수를 사용하여 로딩 상태를 표시합니다. -
loadData
함수를 작성하여 데이터를 비동기적으로 로드하는 로직을 구현합니다. 비동기 작업이 완료되면loading
변수를 false로 변경하여 로딩 상태를 표시하지 않습니다. -
handleScroll
함수에서는 스크롤 이벤트를 처리하고, 스크롤이 페이지 하단에 도달하면loadData
함수를 호출하여 데이터를 로드합니다.
이렇게 하면 Svelte 애플리케이션에서 무한 스크롤을 구현할 수 있습니다. Svelte는 상태 관리와 이벤트 처리를 간단하고 직관적으로 다룰 수 있는 기능을 제공하므로, 무한 스크롤을 포함한 다양한 기능을 쉽게 구현할 수 있습니다.
더 자세한 내용은 Svelte 공식 문서를 참조하시기 바랍니다.