当前位置:首页 > JavaScript

js 加载更多实现

2026-04-04 00:22:25JavaScript

滚动监听实现加载更多

通过监听滚动事件,判断是否滚动到页面底部触发加载。核心是计算scrollTopclientHeightscrollHeight的关系:

window.addEventListener('scroll', function() {
  const { scrollTop, clientHeight, scrollHeight } = document.documentElement;
  if (scrollTop + clientHeight >= scrollHeight - 5) {
    loadMoreData();
  }
});

function loadMoreData() {
  // 获取数据并渲染到页面
}

Intersection Observer API实现

现代浏览器推荐使用Intersection Observer API,性能更好:

js 加载更多实现

const observer = new IntersectionObserver((entries) => {
  if (entries[0].isIntersecting) {
    loadMoreData();
  }
});

const sentinel = document.createElement('div');
sentinel.id = 'sentinel';
document.body.appendChild(sentinel);
observer.observe(sentinel);

分页参数控制

后端API通常需要分页参数控制数据获取:

js 加载更多实现

let currentPage = 1;
const pageSize = 10;

async function loadMoreData() {
  const data = await fetch(`/api/data?page=${currentPage}&size=${pageSize}`);
  currentPage++;
  renderData(data);
}

加载状态管理

避免重复请求需要管理加载状态:

let isLoading = false;

async function loadMoreData() {
  if (isLoading) return;

  isLoading = true;
  showLoadingIndicator();

  try {
    const data = await fetchData();
    renderData(data);
  } finally {
    isLoading = false;
    hideLoadingIndicator();
  }
}

虚拟滚动优化

对于大量数据,考虑虚拟滚动技术:

// 使用库如react-window或vue-virtual-scroller
import { FixedSizeList as List } from 'react-window';

<List
  height={500}
  itemCount={1000}
  itemSize={50}
  width={300}
>
  {({ index, style }) => (
    <div style={style}>Row {index}</div>
  )}
</List>

标签: 加载更多
分享给朋友:

相关文章

vue实现加载

vue实现加载

Vue 实现加载功能的方法 使用 v-if 或 v-show 控制加载状态 通过数据绑定控制加载动画的显示与隐藏。v-if 会完全移除 DOM 元素,v-show 只是切换 display 属性。…

vue实现图片加载

vue实现图片加载

Vue 实现图片加载的方法 在 Vue 中实现图片加载可以通过多种方式,以下是一些常见的方法: 使用 v-bind 绑定图片路径 通过 v-bind 动态绑定图片路径,可以灵活地加载本地或远程图片。…

vue 实现懒加载

vue 实现懒加载

vue 实现懒加载的方法 在Vue中实现懒加载可以通过多种方式完成,以下是几种常见的方法: 使用Vue Router的懒加载 Vue Router支持动态导入组件,从而实现路由级别的懒加载。这种方式…

vue 实现模块加载

vue 实现模块加载

Vue 实现模块加载的方法 使用动态导入(Dynamic Import) 动态导入是 ECMAScript 模块系统的特性,Vue 项目可以通过 import() 语法实现按需加载模块。这种方式在构建…

vue加载更多实现

vue加载更多实现

滚动监听实现加载更多 通过监听滚动事件判断是否到达底部触发加载。在组件的mounted钩子中添加滚动事件监听器,计算滚动位置与文档高度的关系。 mounted() { window.addEve…

vue懒加载实现方式

vue懒加载实现方式

Vue懒加载的实现方式 使用Vue异步组件 Vue允许将组件定义为异步加载的工厂函数,通过import()动态导入组件实现懒加载。这种方式适用于路由组件或按需加载的组件。 const AsyncCo…