手机端效果实现下拉刷新上拉加载更多数据---自定义数据篇

2023-11-12

代码如下

需安装react-pullload插件
yarn add react-pullload

import React from 'react'
import "../../../node_modules/react-pullload/dist/ReactPullLoad.css";
import ReactPullLoad,{STATS} from 'react-pullload'
const loadMany= 3;//设置可以加载多少次

const cData = [
	"https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F0820%2F5b995c63j00qy48rp001ic000jg00elm.jpg&thumbnail=650x2147483647&quality=80&type=jpg",
  "https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F0820%2F5b995c63j00qy48rp001ic000jg00elm.jpg&thumbnail=650x2147483647&quality=80&type=jpg",
  "https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F0820%2F5b995c63j00qy48rp001ic000jg00elm.jpg&thumbnail=650x2147483647&quality=80&type=jpg"
]

class App extends React.Component{

	constructor(){
		super();
		this.state ={
			hasMore: true,
			data: cData,
			action: STATS.init,
			index: loadMany 
    }
	}

	handleAction = (action) => {
		console.info(action, this.state.action,action === this.state.action);
		if(action === this.state.action ||action === STATS.refreshing && this.state.action === STATS.loading ||action === STATS.loading && this.state.action === STATS.refreshing){
			return false
		}

		if(action === STATS.refreshing){//刷新
			setTimeout(()=>{
				this.setState({
					data: cData,
					hasMore: true,
					action: STATS.refreshed,
					index: loadMany
				});
			}, 3000)
		} else if(action === STATS.loading){//加载更多
			this.setState({
				hasMore: true
			});
			setTimeout(()=>{
				if(this.state.index === 0){
					this.setState({
						action: STATS.reset,
						hasMore: false
					});
				} else{
					this.setState({
						data: [...this.state.data, ...cData],
						action: STATS.reset,
						index: this.state.index - 1
					});
				}
			}, 2000)
		}
		this.setState({
			action: action
		})
	}
	getScrollTop = ()=>{
		if(this.refs.reactpullload){
			console.info(this.refs.reactpullload.getScrollTop());
		}
	}
	setScrollTop = ()=>{
		if(this.refs.reactpullload){
			console.info(this.refs.reactpullload.setScrollTop(100));
		}
	}
	componentDidMount(){}
	render(){
		const {
			data,
			hasMore
		} = this.state

		return (
			<div style={{background:'white',margin:0,padding:0}}>
				<ReactPullLoad
					downEnough={150}
					ref="reactpullload"
					className="block"
					isBlockContainer={true}
					action={this.state.action}
					handleAction={this.handleAction}
					hasMore={hasMore}
					style={{paddingTop: 0}}
					distanceBottom={1000}>
					<ul className="test-ul">
						{
							data.map( (item, index )=>{
								return <li key={index}><img src={item} alt=""/></li>
							})
						}
					</ul>
				</ReactPullLoad>
			</div>
		)
	}
}
export default App
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手机端效果实现下拉刷新上拉加载更多数据---自定义数据篇 的相关文章

  • React重点知识拓展,含Hooks、路由懒加载等

    第7章 React扩展 一 setState 1 setState更新状态的2种写法 setState stateChange callback 对象式的setState stateChange为状态改变的对象 该对象可以体现出状态的更改
  • 虚拟列表的实现思路(附带react代码)

    虚拟列表实现思路 代码链接 div class 滚动容器 div class 撑起列表正常高度 div div class 列表容器 div class 列表项 div div div 1 列表项 的高度确定 2 利用 滚动容器 的高度计算
  • React Native 环境搭建, 新建项目, 运行和调试

    React Native 可以理解为一个基于 JavaScript 具备动态配置能力 面向前端开发者的移动端开发框架 目前为止虽然一直还没有V1 0 0版本 但是相信很多小伙伴都了解过或者已经入坑了 为什么RN那么有人气呢 我们可以先简单分
  • React重新渲染的触发机制及其优化策略

    React是一个用于构建用户界面的JavaScript库 它的核心特点之一是使用虚拟DOM Virtual DOM 来实现高效的组件渲染 那组件重新渲染的机制是如何呢 基于这些机制 如果进行优化呢 虚拟DOM是一个用JavaScript对象
  • React 组件通讯

    目录 1 组件通讯 概念 1 组件的特点 2 知道组件通讯意义 总结 2 组件通讯 props 基本使用 1 传递数据和接收数据的过程 2 函数组件使用 props 3 类组件使用 props 总结 3 组件通讯 props 注意事项 1
  • state和props的区别__react

    首先说明 state和props是每个组件都有的 其次 state可变 但props不可变 这是官网给出的说法 但实操过程中 state的确可变 但props也可以变 是不是fb搞错了 当然不是 这里的可变与不可变 说的是改变后 是否会重新
  • react的条件渲染(或者组件渲染)五种方式 --开发基础总结

    1 使用if的方式判断是否渲染某个组件 function UserGreeting props return h1 Welcome back h1 function GuestGreeting props return h1 Please
  • 配置使用Eslint的时候 版本错误 "eslint": "5.6.0" a different version of eslint was detected higher up in the tr

    1 如果你也遇到下面的问题 你可以 按照命令行提示的那样 下面这四步完成的一般就可以了 但是不排除你在运行的时候忘记下载某些依赖 1 删除 package lock json 不是package json 你可以选择 yarn lock 或
  • 【Ant Design】Form.Item创建自定义表单

    一 概述 Antd是一个非常强大的UI组件库 里面的Form表单组件也基本能满足我们大多数场景 但是也有需要自定义表单的场景 Vue2里我们使用v model 结合子组件的model属性 来实现自定义组件的双向绑定 Vue3里我们使用v m
  • React页面设计初体验

    1 定制路由 export default login path login name login component layouts BlankLayout routes path login component Login Index
  • Vite搭建react+ts项目

    创建一个react项目 首先需要打开终端 进行vite的引入 yarn create vite 使用react模板创建项目 yarn create vite react test template react cd react test y
  • 三、react中类组件和函数组件

    简介 本篇我们只要介绍react中类组件与函数组件两种组件的写法 两者的优缺点 同时对在我们的项目开发中该使用类组件还是函数组件进行思考分析 废话不多说进入正题 类组件 设计思路 类组件时面向对象编程的思想 在其中我们去设计类组件时使用st
  • 关于Vue.js和React.js,听听国外的开发者怎么说?

    VueJS 与 ReactJS 到底怎么样如何 听听别人怎么说 使用所有新的库和框架 很难跟上所有这些库和框架 也就是说 这就需要您决定哪些是值得花时间的 让我们看看人们说什么 和Vue JS一起工作是很愉快的 我发现学习曲线很浅 然而 这
  • react和react jsx基础

    本文是个人学习笔记 例子都是来自React Native官网 之前不是做前端的 没有使用过react 要学习react native做混合开发 react 包括react jsx还是得补补 react和react jsx react是一个j
  • React之state、hooks性能分析

    目录 一 state 1 为什么使用setState 2 setState异步更新 3 如何获取异步的结果 4 setState一定是异步吗 5 源码分析 6 数据的合并 7 多个state的合并 二 为什么需要Hook 三 Class组件
  • React实现关键字高亮

    先看效果 实现很简单通过以下这个函数 highLight text keyword gt return text split keyword flatMap str gt span keyword span str slice 1 展示某段
  • React、Vue2.x、Vue3.0的diff算法

    前言 本文章不讲解 vDom 实现 mount 挂载 以及 render 函数 只讨论三种 diff 算法 VNode 类型不考虑 component functional component Fragment Teleport 只考虑 E
  • React class组件、react-hook函数组件分别实现五子棋

    react class类组件 react hook函数组件分别实现五子棋 前言 使用create react app脚手架简单搭建 不用安装其他依赖 纯 js css实现 这里就只是简单的说明目录结构和思路 具体的代码实现请转到 Githu
  • 黑马React:基础拓展

    黑马React D10 基础拓展 Date December 18 2023 useReducer 基础使用 作用 让 React 管理多个 相对关联 的状态数据 补充 和useState的作用类似 用来管理相对复杂的状态数据 特点 use
  • React Jsx转换成真实DOM过程?

    面试官 说说React Jsx转换成真实DOM过程 一 是什么 react 通过将组件编写的 JSX 映射到屏幕 以及组件中的状态发生了变化之后 React 会将这些 变化 更新到屏幕上 在前面文章了解中 JSX 通过 babel 最终转化

随机推荐

  • 【软件测试】自动化测试战零基础教程——Python自动化从入门到实战(六)

    整理不易 希望对各位学习软件测试能带来帮助 软件测试知识持续更新 第五章 自动化测试用例设计 第一节 手工测试用例与自动化测试用例 手工测试用例与自动化测试用例对比 用例选型注意事项 第二节 测试类型 测试静态内容 测试链接 功能测试 测试
  • Relatives 【POJ - 2407】【欧拉筛、预处理】

    Given n a positive integer how many positive integers less than n are relatively prime to n Two integers a and b are rel
  • vs中报错error C4996: 'wcstombs': This function or variable may be unsafe

    遇到这样的情况就是缺少宏 所以需要我们将需要的宏进行加上就可以了 在以下的位置 项目 gt 属性 gt 配置属性 gt C C gt 预处理器 gt 预处理器定义 增加 CRT SECURE NO DEPRECATE 完成
  • QTreeWidget存放自定义数据

    QTreeWidget 双击可编辑的设置 connect ui treeWidget RedLamp SIGNAL itemClicked QTreeWidgetItem int this SLOT Slot TreeRedLampIncr
  • C++中类的静态变量在哪初始化

    C 中类的静态变量在哪初始化 static修饰的成员变量存在哪 static成员变量 不能在头文件中初始化 3 static成员必须在类外初始化 并且 不能在头文件中初始化 否则 在链接时可能会出现重定义的问题 C 成员初始化 class
  • C++ 强制转换运算符

    强制转换运算符是一种特殊的运算符 它把一种数据类型转换为另一种数据类型 强制转换运算符是一元运算符 它的优先级与其他一元运算符相同 大多数的 C 编译器都支持大部分通用的强制转换运算符 type expression 其中 type 是转换
  • 【Unity Shader】浅析Unity shader中RenderType的作用及_CameraDepthNormalsTexture

    初学Unity ShaderLab的时候 一定有接触过Unity Shader中的Tags标签块 比如 span span LightMode Vertex Queue Transparent IgnoreProjector True Re
  • stm32第二课

    stm编程写状态机 使用MENU 菜单 设置多个变量 c文件是驱动文件 h文件是库文件豆腐线规范 并做读书笔记 AHB总线规范是AMBA总线规范的一部分 AMBA总线规范是ARM公司提出的总线规范 被大多数SoC设计采用 它规定了AHB A
  • 函数的引用返回

    引用是给变量取一个别名 所以引用传递会直接进行变量本身的传递 它的最大好处是可以把别处对变量的改变保留下来 第二好处是它提高了性能 如果函数的返回值是一个引用 那么 如上文所说 它会节约一组构造 赋值和析构过程 但是 函数返回引用往往会带来
  • ZooKeeper的学习与应用

    转载 http blog csdn net rengq126 article details 7393227 最近大概学习了一下ZooKeeper 本身并没有深入 LGG尝试着在虚拟机里面搭了平台 看了看一些教材 从网上到处看别人的博文并引
  • Amdahl's law and Gustafson's law

    在高并发程序设计中有两个非常重要的定律 Amdahl 阿姆达尔定律 Gustafson定律 古斯塔夫森定律 这两个定律从不同的角度诠释了加速比与系统串行化程度 cpu核心数之间的关系 它们是我们在做高并发程序设计时的理论依据 加速比 加速比
  • python学习之定制发送带附件的电子邮件

    Python SMTP发送邮件 SMTP Simple Mail Transfer Protocol 即简单邮件传输协议 它是一组用于由源地址到目的地址传送邮件的规则 由它来控制信件的中转方式 python的smtplib提供了一种很方便的
  • 【C++】STL-常用算法-常用查找算法

    0 前言 1 find include
  • @ResponseBody 和 @RequestBody以及@PathVariable的作用

    一 ResponseBody ResponseBody是作用在方法上的 ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中 一般在异步获取数据时使用 也就是AJAX 在使用 RequestMap
  • form表单及ajax使用form-serialize提交

    1 表单定义 在网页中 表单主要负责数据的采集功能 表单由 表单标签 表单域 表单按钮 组成 html的form标签就是表单标签 是一个容器 用来将页面中指定的区域划定为表单区域 表单域 提供了采集用户信息的渠道 input textare
  • 计算机毕业设计-基于SSM的学生成绩管理系统

    项目摘要 系统开发技术 Java语言 Java主要采用CORBA技术和安全模型 可以在互联网应用的数据保护 它还提供了对EJB Enterprise JavaBeans 的全面支持 java servlet API Java java se
  • 微信小程序自定义导航栏

    微信小程序自定义导航栏 业务需求 点击小房子进行跳转指定的页面 更改小房子的样式 或者是自定义导航栏 首先我们需要找到pages json这个文件 如果是原生的微信小程序文件名字是 app json其实就是找到配置路由的文件 在代码里面添加
  • 服务器拖两个屏幕win10系统,win10系统设置两个显示器的还原方案

    win10系统使用久了 好多网友反馈说关于对win10系统设置两个显示器设置的方法 在使用win10系统的过程中经常不知道如何去对win10系统设置两个显示器进行设置 有什么好的办法去设置win10系统设置两个显示器呢 在这里小编教你只需要
  • Jackson 双引号的问题

    当用执行下面的代码的时候 String json name chenhailong Map
  • 手机端效果实现下拉刷新上拉加载更多数据---自定义数据篇

    代码如下 需安装react pullload插件 yarn add react pullload import React from react import node modules react pullload dist ReactPu