当前位置: 首页 > article >正文

Uniapp触底刷新

在你的代码中,使用了 scroll-view 来实现一个可滚动的评论区域,并且通过监听 @scrolltolower 事件来触发 handleScrollToLower 函数,以实现“触底更新”或加载更多评论的功能。

关键部分分析:

  1. scroll-view 组件:

    • scroll-view 是一个支持滚动的容器组件,可以通过设置 scroll-y 来启用纵向滚动。
    • @scrolltolower 事件监听器:当滚动到底部时会触发该事件,通常用来加载更多数据或执行其他操作。
  2. @scrolltolower="handleScrollToLower":

    • @scrolltolower 绑定了 handleScrollToLower 函数。这个事件会在用户滚动到 scroll-view 的底部时被触发。
  3. handleScrollToLower 方法:

    • 当用户滚动到底部时,handleScrollToLower 被调用。你在该函数内部调用了 triggerFunction 来执行一些操作,比如加载更多评论。
    • 在实际应用中,triggerFunction 可以替换成发起请求来从服务器获取更多数据,或者更新 commentsList
  4. commentsList 数据更新:

    • 你通过 onMounted 生命周期钩子来模拟从服务器加载数据。初始化时填充了一个评论列表,并通过一个 for 循环来模拟追加更多的评论(其实是模拟加载更多的效果)。
    • 在实际的生产环境中,你可能会在 triggerFunction 中触发一个 API 请求,来拉取更多的数据并更新 commentsList

具体触底更新的实现逻辑:

  • 用户向下滚动时,scroll-view 会触发 scrolltolower 事件。这个事件绑定到 handleScrollToLower 方法。
  • handleScrollToLower 方法内,你调用了 triggerFunction,这通常会是一个加载更多数据的函数。在你的例子中,triggerFunction 只是简单地打印了一个日志,但在实际项目中它应该用来发起网络请求、更新数据或者执行其他任务。
  • 如果评论数据被动态更新(例如通过调用 API 加载新评论并添加到 commentsList 中),那么界面会自动重新渲染,展示新的评论内容,从而实现了“触底更新”的效果。

为什么这可以触底更新:

  • scroll-view 组件的 @scrolltolower 事件会在滚动到底部时触发,因此可以实现加载更多数据的功能。触发该事件后,通过更新数据(如 commentsList)来展示新的内容,从而完成“触底更新”。
<template>
	<scroll-view class="commentBox" scroll-y @scrolltolower="handleScrollToLower">
		<view class="comment" v-for="comment in commentsList" :key="comment.id">

			<u-row style="">
				<u-col span="">
					<view class="">
						<up-avatar :src="comment.url" size=28></up-avatar>
					</view>
				</u-col>

				<u-col span="3" style="margin-left: 10rpx;">
					<view class="">
						<view class="" style="margin-bottom: -11rpx;">
							<span style="font-weight: bolder;font-size: 20rpx;">{{comment.name}}</span>
						</view>
						<view class="">
							<span style="font-size: 10rpx;font-weight: 200;">{{comment.date}}</span>
						</view>
					</view>
				</u-col>
			</u-row>

			<u-row style="">
				<u-col span="1" class=""></u-col>
				<u-col span="11" class="">
					<view class="" style="padding-right: 30rpx;">
						<span style="font-size: 25rpx;">{{comment.comment}}</span>
					</view>
				</u-col>
			</u-row>

			<up-divider text="" style="margin: 8rpx 0rpx;"></up-divider>
		</view>
	</scroll-view>
</template>

<script setup>
	import {
		ref,
		onMounted
	} from 'vue'

	const commentsList = ref([{
		id: '',
		url: '',
		name: '张三',
		date: '2023-12-23 12:12',
		comment: '不知道说防静电搜咖啡机都说了粉底哦时间覅哦对王师傅is哦房间地哦师傅什么'
	}])


	onMounted(() => {
		for (let i = 0; i < 10; i++) {
			commentsList.value.push({
				id: '' + i,
				url: '',
				name: '张三',
				date: '2023-12-23 12:12',
				comment: '不知道说防静电搜咖啡机都说了粉底哦时间覅哦对王师傅is哦房间地哦师傅什么'
			})
		}
	})
	const handleScrollToLower = () => {
		console.log("已滚动到底部,触发函数!");
		triggerFunction();
	};

	const triggerFunction = () => {
		console.log("触发自定义函数");
	};
</script>

<style lang="scss" scoped>
	.commentBox {
		width: 100%;
		height: 100vh;
		overflow-y: auto;
	}

	.comment {
		margin-left: 20rpx;
	}

	.context {
		font-size: 25rpx;
		padding: 20rpx;
	}
</style>

http://www.kler.cn/a/415847.html

相关文章:

  • APP聊天项目介绍
  • 基于matlab程序实现人脸识别
  • Could not locate device support files.
  • idea_卸载与安装
  • android集成FFmpeg步骤以及常用命令,踩坑经历
  • 第 40 章 - Go语言 模式与反模式
  • 【目标跟踪】Anti-UAV数据集详细介绍
  • 每日十题八股-2024年11月29日
  • 华纳云:服务器网络延迟问题可能由哪些因素引起?
  • 力扣81:搜索旋转排序数组II
  • 软件开发和调试:定位错误位置
  • 服务器实现ssh证书登录
  • PaddleOCR:一款高性能的OCR工具介绍
  • Linux xattr 命令详解
  • Windows下的Milvus安装-保姆级安装教程
  • 【JAVA】Java高级:连接池的使用与性能优化——C3P0、HikariCP与DBCP比较
  • 深度学习——激活函数
  • 基于snowflake id 的 N 位唯一数字id 生成算法总结
  • 浅谈Java库之‌Guava
  • SQL进阶技巧:如何寻找同一批用户 | 断点分组应用【最新面试题】