效果 :

滚动条触底后, 将上一页的数据与下一页的数据合并, 滚动条也会自动跳到页数合并的中间

实现步骤 :

1. 使用 uni-app 提供的标签 scroll-view

2. scroll-view 标签提供了添加滚动条属性 scroll-y

3. scroll-view 标签提供了 下拉上拉触底事件 或 自定义刷新事件

4. 在触底刷新事件中, 增加 page 页数属性, 并将 page 属性传给接口

5. 每次触底刷新, 接口返回的数据, 使用 数组 API ---> concat 合并数组

6. 将 合并的数组, 渲染到页面上

组件结构层 :

<scroll-view
	scroll-y
	@scrolltolower="scroll"
	lower-threshold
>
	<view
		v-for="(item, index) in list"
		:key="index"
	>
		<view>{{ item }}</view>
	</view>
</scroll-view>

组件行为层 :

<script>
import { mapActions } from 'vuex';
export default {
	data() {
		return {
			// 列表数据
			list: [],
			// 加载数据页数
			page: 1,
		};
	},

	methods: {
		...mapActions('depotScope', ['getPage']),
        // 父组件接口传过来的数据
		initData(data) {
			// 使用数组API叠加每次翻页的数据
			this.list = this.list.concat(data);
		},

		// 滚动加载事件
		scroll(e) {
			this.page++;
			// 每次翻页将页数传到vuex中, vuex 会将接口需要参数传给接口重新获取数据
			this.getPage(this.page);
		},
	},

};
</script>

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐