EP27 触底加载并且避免无效请求

文件路径: E:/homework/uniappv3tswallpaper/pages/classlist/classlist.vue

queryParams 中添加了 pageNumpageSize 属性。
onReachBottom 周期中再次发起请求。
在请求函数中修改列表参数,将已经获取的数据和新获取的数据结构并重新拼接成新的数组。
在请求函数中添加判断条件。

<template>
	<view class="classlist">
		<view class="content">
			<navigator url="/pages/preview/preview" class="item" v-for="item in classList" :key="item._id">
				<image :src="item.smallPicurl" mode="aspectFill"></image>
			</navigator>
		</view>
	</view>
</template>

<script setup>
	import {
		ref
	} from 'vue'
	import {
		apiGetCLassList
	} from '@/api/apis.js'
	import {
		onLoad,
		onReachBottom
	} from '@dcloudio/uni-app'

	const queryParams = {
		pageNum: 1,
		pageSize: 12
	}
	const noData = ref(false)

	onLoad(e => {
		console.log(e)
		let {
			id = null,
				name = null
		} = e
		uni.setNavigationBarTitle({
			title: name
		})
		queryParams.classid = id

		getClassList()
	})

	// 触底获取新数据
	onReachBottom(() => {
		if (noData.value) {
			return
		}
		queryParams.pageNum++
		getClassList()
	})
	
	// 定义列表参数
	const classList = ref([])

	const getClassList = async () => {
		let res = await apiGetCLassList(queryParams)
		classList.value = [...classList.value, ...res.data]
		if (queryParams.pageSize > res.data.length) {
			noData.value = true
		}
		console.log(111)
	}
</script>

<style lang="scss">
	.classlist {
		.content {
			display: grid;
			grid-template-columns: repeat(3, 1fr);
			gap: 5px;
			padding: 5rpx;

			.item {
				height: 440rpx;
				width: 100%;

				image {
					height: 100%;
					width: 100%;
					display: block;
				}
			}
		}
	}
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值