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

React 实现下拉刷新效果

简介

        本文基于react实现下拉刷新效果,在下拉的时候会进入loading状态。

实现效果

效果如上图所示,在下拉到底部时候,会出现loading条,在处理完成后loading条消失。

具体代码

布局 & 逻辑

import {useRef, useState} from "react";export const ScrollView = ({loadingComponent, contentComponent}) => {const LoadingComponent = loadingComponent;const ContentComponent = contentComponent;/*** 加载状态*/const [loading, setLoading] = useState(false);/*** 滚动容器引用*/const scrollRef = useRef(null);let contentStyle = {height: '30px', width:'100%', textAlign:'center', display:'none'};if (loading){ // 加载中显示contentStyle = {height: '30px', width:'100%', textAlign:'center'};scrollRef.current.scrollTop = 0; // 滚到头部}const handleScroll = ()=>{const {scrollTop} = scrollRef.current;if (scrollTop > 50 && !loading){setLoading(true); // 设置为加载中状态// 模拟数据加载setTimeout(()=>{setLoading(false); // 加载完成}, 3000)}}return (<div style={{height: '200px', overflow:'auto', width:'40%'}} ref={scrollRef} onScroll={handleScroll}><div style={contentStyle}><LoadingComponent/></div><div style={{height:'300px', width:'100%'}}><ContentComponent/></div></div>)
}

使用demo


import {ScrollView} from "./component/scroll-view/ScrollView";const App = ()=> {return (<ScrollView loadingComponent={Loading} contentComponent={Content}></ScrollView>)
}
const Loading = ()=>{return <div>loading</div>
}
const Content  = ()=>{return <div> hello, world</div>
}export default App;

http://www.lryc.cn/news/319468.html

相关文章:

  • 使用endnote插入引用文献导致word英文和数字变成符号的解决方案
  • npm下载慢换国内镜像地址
  • 开源绘图工具 PlantUML 入门教程(常用于画类图、用例图、时序图等)
  • Ubuntu20下C/C++编程开启TCP KeepAlive
  • 前世档案(不用二叉树语法秒杀版c++)
  • Java基础 - 9 - 集合进阶(二)
  • javaEE——线程的等待和结束
  • sqlplus设置提示符
  • macbook删除软件只需几次点击即可彻底完成?macbook删除软件没有叉 苹果笔记本MacBook电脑怎么卸载软件? cleanmymac x怎么卸载
  • Unity WebGL ios 跳转URL
  • 机器学习模型—XGBoost
  • 在Swift中集成Socket.IO进行实时通信
  • vue防止用户连续点击造成多次提交
  • upload-labs通关方式
  • 本地用AIGC生成图像与视频
  • java 如何使用Lambda表达式实现递归和循环的替代品
  • 由浅到深认识C语言(12):位段/位域
  • antd5 虚拟列表原理(rc-virtual-list)
  • 机器学习-04-分类算法-03KNN算法
  • Learn OpenGL 08 颜色+基础光照+材质+光照贴图
  • springboot多模块下swaggar界面出现异常(Knife4j文档请求异常)或者界面不报错但是没有显示任何信息
  • 【系统架构设计师】系统工程与信息系统基础 01
  • python自动化之(django)(2)
  • C语言 内存函数
  • 145 Linux 网络编程1 ,协议,C/S B/S ,OSI 7层模型,TCP/IP 4层模型,
  • 【Java】List, Set, Queue, Map 区别?
  • 打卡学习kubernetes——了解k8s基本概念
  • 特殊内齿轮加工的另一种选择
  • Visual Studio配置libtorch(cuda安装一步到位)
  • 【工具】一键生成动态歌词字幕