vue 数据手写分页,定时展示

news2024/11/18 11:27:20

我们在业务之中,其实会常常用到一些数据的分段展示 , 比如数据量过大导致echarts无法展示,我们就可以将数据进行算法分页 , 然后套用定时器实时更新分段数据;

例子展示 : 将下列数组截取成每页5条数据的分页效果 , 要求定时轮播不同页数的渲染数据

    this.arr = [
      { name: '1', id: '1' },
      { name: '2', id: '2' },
      { name: '3', id: '3' },
      { name: '4', id: '4' },
      { name: '5', id: '5' },
      { name: '6', id: '6' },
      { name: '7', id: '7' },
      { name: '8', id: '8' },
      { name: '9', id: '9' },
      { name: '10', id: '10' },
      { name: '11', id: '11' },
    ]

接下来请看我提供给你的效果图 , 如果你也需要,请耐心看完这篇讲解哟~
在这里插入图片描述

开发思路 :

  1. 定义页数变量与总页数变量 这两个变量后期可以帮助我们进行数据的重置
  2. 定义定时器标识 , 后期帮助我们定时展示

分页思路:

  1. 算出总页数:
    总页数 = 数组长度和每页多少条取余 , 如果余为0,说明整除 , 直接返回(数组长度/每页条数),如果余不为0,就说明有一页不满足每页最大条数,我们返回(数组长度/每页条数+1)即可
    相当于 :
    数组长度11
    我设定每页条数5
    那么就是余下1 , 余数不为0,直接就是(11/5+1)= 3 页 , 第三页展示的数据就是余下的那条数据

  2. 拿到每页数据
    我们通过数组的 slice(从哪开始[索引] , 截止到哪结束[索引]),获取截取的每页数据
    从哪儿开始的索引 :(当前所在的页数-1)5
    原因是 :
    如果现在是第一页 , 那我们获取的索引就是 (1-1)5 = 0, 也就是第一页的数据我们从索引为0的数据项开始截取
    如果现在是第二页 , 那我们获取的索引就是 (2-1)5 = 0, 也就是第一页的数据我们从索引为5的数据项开始截取
    原因是 : 开始的时候我们设定的每页条数是5 , 那么从数组索引为5,也就是第6个数据开始截取作为第二页的第一个数据 , 这样以此类推

    截止到哪结束[索引]:当前所在页数
    5
    原因是 :
    如果现在是第一页 , 那我们获取的索引就是 1
    5 = 5, 将作为我们截止到哪儿的结束索引 , 因为数组的slice方法 , 只是截止到截止到哪结束[索引]的前一个索引 , 我们获取的是5 , 那么实际上就是截取到了索引为 0 1 2 3 4 这五条数据作为第一页数据的展示数据用
    如果现在是第二页 , 那我们获取的索引就是2
    5 = 10 , 也就是会截取到索引为 5 6 7 8 9的数据作为第二页的数据,这样以此类推

  3. 定时之展示
    定义定时器 , 触发定时器的时候 , 让所在当前页自动+1 , 判断如果所在当页大于了总页面就重置为1,从第一页开始展示和获取数据即可

    接下来是完整代码 , 你可以根据我的注解 , 了解其中运行规则


data(){
  return{
      arr: [], // 需要分页的数据
      currentPage: 1, // 当前页数
      totalPage: 0, // 总页数 - 需要计算,每页显示5个
      timeId:0, // 定时器标识
  }
}mounted(){
    // 模拟数据
    this.arr = [
      { name: '1', id: '1' },
      { name: '2', id: '2' },
      { name: '3', id: '3' },
      { name: '4', id: '4' },
      { name: '5', id: '5' },
      { name: '6', id: '6' },
      { name: '7', id: '7' },
      { name: '8', id: '8' },
      { name: '9', id: '9' },
      { name: '10', id: '10' },
      { name: '11', id: '11' },
    ]
    // 开始执行函数和逻辑 - 打开控制台看运行数据即可
    this.totalData()},
methods:{
    // 获取总页数
    totalData() {
      // 总页数 = 数组长度和每页多少条取余 , 如果余数是0 , 代表正好 , 如果不是0,就在总页数上+1 , 即可得出总页数
      this.totalPage = this.arr.length % 5 == 0 ? parseInt(this.arr.length / 5) : parseInt(this.arr.length / 5 + 1);
      console.log('总页数',this.totalPage )
      // 调用定时器
      this.startInterval();
    },
    // 获取每页数据
    onePageData(){
      // 开始 - 第一页就是0,第二页就是5...10
       const start = (this.currentPage - 1)*5

      // 结束 - 当前页*5 - 截取到什么 第一页就是截取到5...10...15
      const end = this.currentPage*5
      // 截取到当页的需要渲染的数据
      const showData = this.arr.slice(start,end);

      console.log(start,end,showData)
    },

    // 封装定时器
    startInterval(){
      // 3秒一执行
      if(this.timeId){
        clearInterval(this.timeId)
      }
     
      this.timeId = setInterval(()=>{
        // 每次隔着时间都自定执行获取需要的每页数据 , 放在这是为了第一次可以获取到
        this.onePageData();
        // 每次隔着时间执行都自动进行翻页
        this.currentPage++
        // 当前页数超过了总页数就恢复成第一页即可
        if(this.currentPage>this.totalPage){
          this.currentPage = 1;
        }
      },3000)

    },
}




如果你耐心看完了就自己写一写,分页其实可以很好的锻炼逻辑思维 , 加油!

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

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

相关文章

观察者模式(python)

一、模式定义 1.观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。 2.观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模…

SpringBoot微服务的发布与部署(3种方式)

基于 SpringBoot 的微服务开发完成之后,现在到了把它们发布并部署到相应的环境去运行的时候了。 SpringBoot 框架只提供了一套基于可执行 jar 包(executable jar)格式的标准发布形式,但并没有对部署做过多的界定,而且…

2022年Python面试题汇总【面试官爱问】

2022年Python面试题汇总【常问】1、请你讲讲python获取输入的方式,以及python如何打开文件2、Python数据处理的常用函数3、请你说说python传参传引用4、请你说说python和java的区别5、Python你常用的包有哪些?6、简单说明如何选择正确的Python版本。7、简…

Qt动态库

QT带界面的动态库 创建动态库 一、新建一个C的动态库的项目 选择C的动态库的项目,进行下一步 修改项目的名字和项目的保存的路径。 选着编译的方式,不需要改,进行下一步。 选着动态库,编译成动态库,进行下一步。 项目…

[附源码]JAVA毕业设计社区生活超市管理系统(系统+LW)

[附源码]JAVA毕业设计社区生活超市管理系统(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目…

[附源码]Python计算机毕业设计SSM计算机学院课程设计管理系统(程序+LW)

[附源码]Python计算机毕业设计SSM计算机学院课程设计管理系统(程序LW) 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。…

基于安卓的课程管理系统app设计

目 录 第1章 绪论 1 1.1 什么是电子课程管理 1 1.2 系统开发的背景 1 1.3 本文主要工作 1 1.4 系统设计目标分析 2 第2章 基本技术方案 3 2.1 Android概述 3 2.2 Android系统的四大组件 3 2.3 Android中的相关技术介绍及分析 5 2.3.1 Android系统架构研究 5 2.3.2 Android架构分…

LeetCode 167. 两数之和 II - 输入有序数组

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 167. 两数之和 II - 输入有序数组,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称…

2.zookeeper

1.工作机制 从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册…

p2.第一章 基础入门 -- 冯诺依曼体系和计算机基础 (二)

1.2 核心基础 1.2.1 计算机基础知识 艾伦麦席森图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。 图灵提出的著名的图灵机模…

铺瓷砖问题

1、题目 用 121 \times 212 的瓷砖,把 N2N \times 2N2 的区域填满,返回铺瓷砖的方法数。 2、思路 记录 F(n) 表示空的 n∗2n * 2n∗2 区域的铺瓷砖方法数。 如果第一块瓷砖 A 竖着放,则问题就变成了 F(n−1)F(n-1)F(n−1) 即空的 (n−1)∗…

C++习题3

求余运算符% 位运算&#xff08;<< >> & | ! ^ 左右移位&#xff0c;与&#xff0c;或&#xff0c;非 &#xff0c;异或&#xff09; 这些符号的运算对象都是整型 unsigned short x0xffff cout<<x; cout输出的是整数&#xff0c;所以要将16进制…

基于jsp+ssm的员工人事工资管理系统-计算机毕业设计

项目介绍 本系统是基于JSP的人事管理系统&#xff0c;使用java来实现动态管理以及数据库管理系统采用mysql等共同来完成。管理员可以通过人事管理系统进行工资管理、用户管理、员工考勤管理、部门管理、权限管理等。经理用户则可通过人事管理系统对进行工资管理、考勤管理、部…

快速排序(看完就会)

目录 什么是快速排序 快速排序的步骤&#xff1a; 以上&#xff1a; 图片步骤简绘&#xff1a; 代码实现&#xff1a; 什么是快速排序 快速排序是由C.A.R.Hoare在1960年提出。它的基本思想是&#xff1a;通过一趟排序将要排序的数据分割成独立的两部分&#xff0c;其中一部…

easypoi导出excel,列要求是数字导出是文本的问题~并分析源码

&#x1f4c3;目录跳转&#x1f4da;简介&#xff1a;实体类分析源码效果&#x1f4da;简介&#xff1a; 由于使用了easypoi导出的excel列需要是数字的但是导出的默认是文本类型&#xff0c;这样选择列就无法进行统计求和&#xff0c;由于没有认真看注解导致我跑去分析源码。所…

ssm校园兼职系统|求职招聘系统计算机专业毕业论文java毕业设计开题报告

&#x1f496;&#x1f496;更多项目资源&#xff0c;最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 《ssm校园兼职系统》该项目采用技术&#xff1a;jsp springmvcspringmybatis cssjs等相关技术&#xff0c;项目含有源码、文档、配套开发软件、软…

《歌在飞》后蒙古包美女又一力作,《一路欢歌到北京》超然来袭

纵观中国华语乐坛&#xff0c;内蒙古音乐独树一帜&#xff0c;而要说到内蒙古的音乐人&#xff0c;就不得不提及苏勒亚其其格。说起著名音乐人苏勒亚其其格&#xff0c;她是一个地道的蒙古族人&#xff0c;如今是内蒙古乌兰牧骑独唱演员。 苏勒亚其其格是草原飞出的金凤凰&…

c++状态机的使用

什么是状态机 状态机是有限状态自动机的简称&#xff0c;是现实事物运行规则抽象而成的一个数学模型。英文名字叫State Machine &#xff0c;不是指一台实际机器&#xff0c;一般就是指一张状态转换图。全称是有限状态自动机&#xff0c;自动两个字包含重要含义。给定一个状态…

Pandas中使用Merge、Join 、Concat合并数据效率对比

在 Pandas 中有很多种方法可以进行dataframe(数据框)的合并。 本文将研究这些不同的方法&#xff0c;以及如何将它们执行速度的对比。 合并DF Pandas 使用 .merge() 方法来执行合并。 import pandas as pd # a dictionary to convert to a dataframe data1 {identificati…

配件厂商Hyper推出支持苹果Find My背包,背包防丢越来越智能

配件厂商 Hyper 今天推出了一款支持 Find My 的双肩包 HyperPack Pro&#xff0c;这样发生遗失或者失窃事件之后能够通过苹果的这项追踪技术快速锁定背包的位置&#xff0c;帮你快速找回。 背包有一个太阳镜口袋和易于拿取的前袋&#xff0c;此外背包上还有一个隐藏式口袋&am…