触底加载上拉刷新

上拉: 

import React, { useState } from 'react';function Shangla() {const [refreshing, setRefreshing] = useState(false);const [startY, setStartY] = useState(0);const [offsetY, setOffsetY] = useState(0);const [scrollY, setScrollY] = useState(0);const handleTouchStart = (e) => {// 记录触摸起始位置和滚动高度const touchStartY = e.touches[0].clientY;const scrollY = e.currentTarget.scrollTop;setStartY(touchStartY);setScrollY(scrollY);};const handleTouchMove = (e) => {// 计算手指移动距离const touchMoveY = e.touches[0].clientY;let delta = touchMoveY - startY;// 当手指向下滑动,并且在页面顶部时触发下拉效果if (delta > 0 && scrollY === 0) {// e.preventDefault(); // 阻止整个页面的滚动delta = delta > 50 ? 50 : deltasetOffsetY(delta);}};const handleTouchEnd = () => {// 当滑动距离超过一定阈值时触发刷新if (offsetY > 30) {setRefreshing(true);setStartY(30);setOffsetY(30);// 执行刷新逻辑...// 刷新完成后重置状态setTimeout(() => {setRefreshing(false);setStartY(0);setOffsetY(0);setScrollY(0);window.scrollTo(0, 0); // 滚动到顶部}, 1000);} else {setStartY(0);setOffsetY(0);}};return (<divstyle={{ height: '100vh', overflow: 'scroll' }}onTouchStart={handleTouchStart}onTouchMove={handleTouchMove}onTouchEnd={handleTouchEnd}><divstyle={{transform: `translate3d(0, ${offsetY}px, 0)`,transition:'transform 0.5s',textAlign: 'center',marginTop: '-22px'}}>{refreshing ? 'Refreshing...' : 'Pull down to refresh'}</div>{/* 商品列表 */}<ul style={{transform: `translate3d(0, ${offsetY}px, 0)`,transition: 'transform 0.5s',textAlign: 'center',margin: '0'}}><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li><li>100</li></ul></div>);
}export default Shangla;

触底:

import React, { useState, useEffect } from "react";function Chudi() {const [data, setData] = useState([]);const [loading, setLoading] = useState(false);useEffect(() => {// 模拟从服务器获取数据的操作fetchData();}, []);// 模拟从服务器获取数据的函数const fetchData = () => {setLoading(true);// 模拟异步请求setTimeout(() => {const newData = [...data, ...getMoreData()];setData(newData);setLoading(false);}, 2000);};// 模拟获取更多数据的函数const getMoreData = () => {// 返回一些新数据return [1, 2, 3, 4, 5,6,7,8,9,10];};// 处理滚动事件const handleScroll = (e) => {const { scrollTop, clientHeight, scrollHeight } = e.target;if (scrollTop + clientHeight  >= scrollHeight) {// 到达底部,执行上拉刷新操作fetchData();}};return (<div style={{ height: "150px", overflow: "auto" }} onScroll={handleScroll}><ul >{data.map((item, index) => (<li key={index}>{item}</li>))}</ul><div style={{height: '30px',background: 'green'}}>{loading && <p>Loading...</p >}</div></div>);
}export default Chudi;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/187287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python实验项目8 :科学计算与可视化

1&#xff1a;创建 numpy 数组。 要求&#xff1a; &#xff08;1&#xff09;使用 array()函数、empty()函数、zeros()函数、linspace()函数等创建 numpy 数组。 &#xff08;2&#xff09;使用 numpy 数组的索引和切片方法访问数组元素。 # 要求&#xff1a; # &#xff0…

代码随想录算法训练营第三十八天| 509 斐波那契数 70 爬楼梯 746 使用最小花费爬楼梯

509 斐波那契数 class Solution {public int fib(int n) {int f[] new int[n 5];f[0] 0;f[1] 1;for(int i 2;i < n;i){f[i] f[i - 1] f[i - 2];}return f[n];} } 时间复杂度O(n&#xff09; 空间复杂度O(n) 70 爬楼梯 class Solution {public int climbStairs(i…

深度学习(三):pytorch搭建卷积神经网络

1.常用函数介绍 0 设备准备 device torch.device("cuda:0" if torch.cuda.is_available() else "cpu")这行代码是用来选择设备的&#xff0c;根据是否有可用的 CUDA 设备来选择使用 GPU 还是 CPU 进行计算。 更详细的解释如下&#xff1a; torch.cuda.…

微信小程序中block和View组件的使用区别

block和View组件都是用于布局的组件: 1. Block组件&#xff1a; Block组件是一个无实际显示效果的组件&#xff0c;它主要用于包裹一组组件&#xff0c;并提供了类似于div的作用。使用Block组件可以将一组组件进行分组&#xff0c;便于样式的管理和控制。Block组件不会在页面…

socket.io介绍

1. 使用的技术 Socket.IO 是一个封装了 Websocket、基于 Node 的 JavaScript 框架&#xff0c;包含 client 的 JavaScript 和 server 的 Node。其屏蔽了所有底层细节&#xff0c;让顶层调用非常简单。 另外&#xff0c;Socket.IO 还有一个非常重要的好处。其不仅支持 WebSocket…

Spring三级缓存处理循环依赖的过程

Spring三级缓存 Spring三级缓存是什么&#xff1f; 一级缓存&#xff1a;单例池。存放的是完整的Bean对象。经过完整的生命周期。二级缓存&#xff1a;存放需要提前暴露的Bean对象。也就不完整的Bean对象。需要提前暴露就是指&#xff0c;可能会被循环依赖。(这里可能需要用代…

mysql的存储过程与函数和一些操作

存储过程与函数 MySQL 中的存储过程和存储函数是一种在数据库服务器上存储复杂逻辑的方式&#xff0c;允许您封装和重用 SQL 代码。它们在管理复杂的数据库操作和提高性能方面非常有用。以下是对它们的详细介绍&#xff1a; 存储过程&#xff08;Stored Procedures&#xff0…

【迅搜05】索引配置(二)字段定义与设计

索引配置&#xff08;二&#xff09;字段定义与设计 经过上篇文章的学习&#xff0c;我们已经了解到了 XS 中的默认索引配置是在哪里&#xff0c;也了解到了配置文件如何加载以及服务端的一些简单配置。今天&#xff0c;我们要学习的重点就是剩下的内容&#xff0c;也是非常重要…

blade 项目

开发文档地址&#xff1a;Bladex微服务框架文档 (magicgeng.top) 项目官网&#xff1a; BladeX 快速开发平台,官方网站,基于SpringBoot,SpringCloud的微服务快速开发平台 技术社区&#xff1a;Blade技术社区-程序猿的技术进阶之路 (bladex.cn) 数据大屏&#xff1a;BladeX 数…

jupyter notebook 添加环境与删除环境

添加环境 一、查看conda现有的环境 打开 Anaconda Powershell Prompt 输入以下代码&#xff0c;查看全部环境&#xff1a;conda env list 可以看到如下已经配置的环境变量&#xff1a; 二、激活现有环境 在 Anaconda Powershell Prompt 继续输入&#xff0c;激活环境&#…

Python之Appium 2自动化测试(Android篇)

一、环境搭建及准备工作 1、Appium 2 环境搭建 请参考另一篇文章: Windows系统搭建Appium 2 和 Appium Inspector 环境 2、安装 Appium-Python-Client&#xff0c;版本要求3.0及以上 pip install Appium-Python-ClientVersion: 3.1.03、手机连接电脑&#xff0c;并在dos窗口…

修改git仓库地址

要修改Git仓库的远程地址&#xff0c;你可以使用以下命令&#xff1a; 查看当前的远程地址&#xff1a; git remote -v修改远程地址&#xff1a; git remote set-url origin <新的远程地址>在这个命令中&#xff0c;你需要将 <新的远程地址> 替换为你想要设置的新的…

13-Vue基础之自定义指令与插槽的使用

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大二在校生 &#x1f921; 个人主页&#xff1a;坠入暮云间x &#x1f43c;座右铭&#xff1a;懒惰受到的惩罚不仅仅是自己的失败&#xff0c;还有别人的成功。 &#x1f385;**学习目标: 坚持每一次的学习打卡 文章…

[c++]——string类____详细初步了解string类的运用

在成为大人的路上喘口气. 目录 &#x1f393;标准库类型string &#x1f393;定义和初始化string对象 &#x1f4bb;string类对象的常见构造 &#x1f4bb;string类对象的不常见构造 &#x1f4bb;读写string对象 &#x1f393; string类对象的修改操作 &#x1f4…

openGauss学习笔记-135 openGauss 数据库运维-例行维护-检查openGauss健康状态

文章目录 openGauss学习笔记-135 openGauss 数据库运维-例行维护-检查openGauss健康状态135.1 检查办法135.2 操作步骤135.3 异常处理 openGauss学习笔记-135 openGauss 数据库运维-例行维护-检查openGauss健康状态 135.1 检查办法 通过openGauss提供的gs_check工具可以开展o…

.net 面试题7

1.请解释一下C#中的异常处理&#xff08;Exception Handling&#xff09;。 异常处理是一种用于处理程序运行过程中发生的异常情况的机制。C#中的异常处理主要是通过使用try-catch-finally语句块来实现。try块用于包含可能引发异常的代码&#xff0c;catch块用于处理已捕获的异…

亚马逊云科技本地系统迁移上云(自定义系统上云)

本地使用VMWare安装系统&#xff0c;例如CentOS7.X、龙蜥8.X等 云端使用AWS MGN服务进行迁移操作 作者&#xff1a;指剑 日期&#xff1a;2023-11-30 业务实现过程 1.本地系统安装(重点) 对安装系统需要额外注意磁盘分区 安装系统&#xff0c;在磁盘分区需要注意&#xff0c;…

List系列集合

List系列集合特点&#xff1a;有序&#xff0c;可重复&#xff0c;有索引 ArrayList&#xff1a;有序&#xff0c;可重复&#xff0c;有索引 LinkedList&#xff1a;有序&#xff0c;可重复&#xff0c;有索引 &#xff08;底层实现不同&#xff01;适合的场景不同&#xff01;…

19. 删除链表的倒数第 N 个结点 --力扣 --JAVA

题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 解题思路 删除链表的倒数第n个节点&#xff0c;需要从链表末尾开始计数&#xff1b;设立私有的全局变量用于统计&#xff1b;因为是单向链表&#xff0c;所以需要通过递归获取需要…

java实战(四):编写学生信息管理系统页面·

1.要求 编写程序 实现表格的输入和编辑功能。界面如下&#xff1a; 1、用户按插入键后&#xff0c;把学号、姓名和成绩插入到最后一行&#xff0c;序号显示当前的行号。 2、当用户选中表格的某一行时&#xff0c;按删除按钮&#xff0c;则这一行从表格中删除 3、编辑功能&am…