【taro react】 ---- 实现 RuiPaging 滚动到底部加载更多数据
1. 前言
在移动应用开发里,列表数据的分页加载是一个高频需求。用户在浏览列表时,为了提升体验,通常希望滚动到底部就能自动加载更多数据。 RuiPaging 组件正是基于此需求开发,它封装了分页加载的通用逻辑,借助 Taro 框架,可适配多端应用,帮助开发者快速实现列表的分页加载功能。
2. 实现分析
- 组件定义与类型声明:借助泛型 T 提升组件的灵活性,使组件能处理不同类型的列表数据。利用 forwardRef 让组件可以接收 ref ,方便父组件调用组件内部的方法。同时定义了 RuiPagingProps 和 RuiPagingRef 接口,明确组件的属性和可调用方法的类型。
- 状态管理,使用 useState 管理四个状态:
2.1 page :记录当前页码,初始值为 1。
2.2 isEnd :标记是否已加载完所有数据,初始值为 false 。
2.3 isLoading :标记是否正在加载数据,避免重复请求,初始值为 false 。
2.4 list :存储列表数据,初始值为 [] 。 - 自动加载逻辑:在 useEffect 钩子中,若 auto 属性为 true 且当前没有在加载数据,就触发数据加载操作。
- 滚动加载逻辑:通过 ScrollView 组件的 onScrollToLower 事件监听滚动到底部的操作,若未加载完所有数据且当前没有在加载数据,就触发新数据的加载。
- 数据处理逻辑
5.1 complete 方法:处理数据加载完成后的逻辑,更新列表数据和页码,判断是否加载完所有数据。
5.2 re