工作这么久了,还不懂如何使用纯前端实现分页吗?-假如后端一股脑返回给你所有数据,让你自个实现分页该怎么办

这篇具有很好参考价值的文章主要介绍了工作这么久了,还不懂如何使用纯前端实现分页吗?-假如后端一股脑返回给你所有数据,让你自个实现分页该怎么办。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有这么个场景,后端接口的列表数据没有做分页给我,相当于是直接返回所有的列表数据,比如有100条就返回100,但是前端显示,则需要做成分页,比如10条为一页。

前端分页功能怎么实现,前端,elementui,vue.js

一、如何使用elementUI+vue实现前端分页

假如你用vue来实现,思路就是将数据切割,然后分批显示。

所以可以使用 computed 计算属性和 v-for 指令来实现前端分页。

因为后端返回给你的数据,你一般会整个存放在一个数组中,要显示第一页,其实就是在该数组中分割提取下标为0-9的数据项,如果是第三页,则在该数组中提取第20-29的数据项,创建一个计算属性,在该计算属性中完成数据的提取,再给到视图即可。

如果我需要结合elementUI的分页组件,怎么实现呢?以下是实现方式,做得跟后端给的分页一样的效果。

<!--这里的paginatedData就是根据list进行切割的计算属性-->
<el-table :data="paginatedData" border style="width: 100%">
	<el-table-column type="index" label="序号" :index="indexMethod" width="60" header-align="center" align="center"> </el-table-column>
        <el-table-column prop="customerName" label="客户名称" min-width="130"> </el-table-column>
        <el-table-column prop="chainName" label="业务名称" min-width="120"> </el-table-column>
        <el-table-column prop="statisticsPeriod" label="统计周期" min-width="80"> </el-table-column>
        <el-table-column prop="dateCycle" label="时间周期" min-width="150"> </el-table-column>
</el-table>     
<!--这里的pagination分页组件不需要做任何改动-->
<div class="pagination-container">
        <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listQuery.page" :page-sizes="[10, 30, 50]" :page-size="listQuery.pageNum" layout="total, sizes, prev, pager, next, jumper" :total="totalNum"> </el-pagination>
</div>
<script>
export default {
  data() {
    return {
      list: [] //后端接口给的列表数据(未分页,全部返回)
    }
  },
  created() {
    //请求后端数据
    this.getList();
  },
  computed: {
    // 使用前端实现分页的计算数据
    paginatedData() {
      // 分页的起始下标
      const startIndex = (this.listQuery.page - 1) * this.listQuery.pageNum;
      // 分页的末尾下标
      const endIndex = startIndex + this.listQuery.pageNum;
      // 返回切割后的数据
      return this.list.slice(startIndex, endIndex);
    },
    // 总条数
    totalNum() {
      return this.list.length;
    },
    // 总分页数
    total() {
      return Math.ceil(this.list.length / this.listQuery.pageNum);
    }
  },
  methods:{
   //数据
   getList() {
      //调用后端接口
      staticsList().then((res) => {
        this.list = res.data;
      });
    },
    // 每页列表数
    handleSizeChange(val) {
      this.listQuery.pageNum = val;
    },
    // 当前分页数(第几页)
    handleCurrentChange(val) {
      this.listQuery.page = val;
    },
  }
}    
</script>
    

这样就可以实现前端分页了。

二、通用的前端分页代码

如果你的项目中,不是用elementUI框架,其实也很好办,主要是记住以上前端分页的思路:找到某一页的开始下标和结束下标,然后去分割数组,返回给视图。

以下是一个示例代码:

<template>
  <div>
    <ul v-for="item in paginatedData" :key="item.id">
      <!-- 显示需要显示的数据 -->
        <li>{{item.name}}</li>
    </ul>
    <div>
      <!-- 显示分页控件 -->
      <button v-for="pageNumber in totalPages" :key="pageNumber" @click="currentPage = pageNumber">
        {{ pageNumber }}
      </button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      data: [], // 假如这里就是你通过接口获取到的所有的数据(未分页)
      itemsPerPage: 10, // 每页显示的数据量
      currentPage: 1 // 当前页码
    };
  },
  computed: {
    paginatedData() {
      const startIndex = (this.currentPage - 1) * this.itemsPerPage;
      const endIndex = startIndex + this.itemsPerPage;
      return this.data.slice(startIndex, endIndex);
    },
    totalPages() {
      return Math.ceil(this.data.length / this.itemsPerPage);
    }
  }
};
</script>

在这个示例中,我们使用 v-for 指令来遍历每一页要显示的数据,并使用 slice() 方法来获取当前页码对应的数据。我们还计算了总页数,以便在分页控件中显示所有的页码。

在模板中,我们使用 v-for 指令来遍历每一页要显示的数据,并在分页控件中使用 v-for 指令来显示所有的页码。我们在每个页码按钮上绑定了一个 click 事件,点击按钮时会更新当前页码。

如果你在web前端开发、面试、前端学习路线有困难可以加我V:imqdcnn。免费答疑,行业深潜多年的技术牛人帮你解决bug。

祝你能成为一名优秀的WEB前端开发工程师!文章来源地址https://www.toymoban.com/news/detail-854093.html

到了这里,关于工作这么久了,还不懂如何使用纯前端实现分页吗?-假如后端一股脑返回给你所有数据,让你自个实现分页该怎么办的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux - 还不懂 gdb 调试器?(调试软件)

    当前,我们可以使用 make/makefile 来程序化执行代码文件;可以使用 gcc/g++ 等编译器来编译代码;可以使用 vim 编辑器来编写代码;其实在 Linux 当中还有一个工具,可以实现调试工作,这个工具就是 -- gdb。 在了解调试器之前,你应该对代码的发布版本做一些了解: 我们在 VS

    2024年02月07日
    浏览(40)
  • Outlook邮箱注册教程 不信你看完还不懂

    Outlook作为Microsoftnbsp;Office家族的办公软件套装之一,关联着很多微软的其他产品。而且Outlook是欧美地区认可度比较高的,不仅可以用于一些境外联络还可以拿来注册Instagram、Twitter、Facebook等各种社交媒体平台。龙哥在这里就给大家出一份详细的Outlook邮箱注册流程,兄弟们对

    2023年04月25日
    浏览(31)
  • 你还不懂《顺序表》?那就不要错过这篇文章!!!

    🎇🎇🎇作者: @小鱼不会骑车 🎆🎆🎆专栏: 《java练级之旅》 🎓🎓🎓个人简介: 一名专科大一在读的小比特,努力学习编程是我唯一的出路😎😎😎 在认识顺序表前我们先认识一下线性表: 小鱼曾在一本书中看到这么一个例子他是这样介绍线性表的: 在一个幼儿园中

    2024年02月21日
    浏览(45)
  • 还不懂 Spring Boot 启动流程的,看这一篇就够了!

    通常,我们只需为一个类添加@SpringBootApplication注解,然后再添加一个main方法,其内固定的写法为SpringApplication.run(Application.class, args)。由此,便可启动Spring Boot服务。 具体而言,Spring Boot的启动流程包括以下几个步骤: 载入 Spring Boot 应用的启动类 根据启动类所在的包路径扫

    2024年02月05日
    浏览(32)
  • 99%的人还不懂怎么和ChatGPT对话(30万字ChatGPT手册)

    关注公众号:人工智能学派 关于chatGPT相关的问题,都可以找我答疑解惑,相互交流学习,有问必应! 大家都知道ChatGPT是一个基于自然语言理解的模型,它总是试图根据对我们提出问题的理解来给出我们想听到的答案。 想必你也发现,它并不是全知全能的,对于它不知道的

    2024年02月10日
    浏览(32)
  • 为什么C++这么复杂还不被淘汰?

    C++是一门广泛使用的编程语言,主要用于系统和应用程序的开发。尽管C++具有一些复杂的语法和概念,但它仍然是编程界的重量级选手,在编程语言排行榜中一直位居前列。 为什么C++这么复杂还不被淘汰呢? C++有以下优势 1、C++具有高性能 C++是一门编译型语言,可以直接编

    2024年02月05日
    浏览(36)
  • 程序员工作久了,都不会好好说人话了...互联网人的....黑话

    原来工作也是会被腌入味的 前段时间有位博主吐槽 工作太久都不会说人话了 这张口的互联网味儿 瞬间梦回自己的工位 而评论区的网友们表示 这不就是”世另我“吗 一场关于互联网黑话的\\\"掰头\\\" 就此开始了... 维护厨房 (厨房秒变公司) 新增小孩 update菜单 民宿排期 店员交

    2023年04月19日
    浏览(27)
  • 用了这么久rabbitmq,你还不知道它的目录结构吗?

    rabbitmq配置目录:/etc/rabbitmq/ ​ 常见配置文件有: (1)配置文件 rabbitmq.conf (2)环境变量文件 rabbitmq-env.conf (3)补充配置文件 advanced.config rabbitmq数据目录:/var/lib/rabbitmq/ 目录文件有: rabbitmq日志文件: /var/log/rabbitmq ​ 目录文件有: rabbitmq命令脚本:/usr/lib/rabbitmq/ 1.bin目录

    2024年02月16日
    浏览(28)
  • 如果你还不懂区块链那就out了(三)--区块链3.0的优秀解决方案:Hyperledger fabric

    前面我们提到,在区块链3.0中,已经发展出了智能合约+私有链的形式,而目前这种形式应用最广泛的就是今天要说的:Hyperledger fabric。 Hyperledger Fabric,是一个基于模块化架构的分布式账本解决方案平台,它是由 IBM 带头发起的一个联盟链项目,于 15 年底移交给 Linux 基金会,

    2024年02月02日
    浏览(31)
  • 前端实现复制文字和图片,原来这么简单!

    实习工作中,遇到一个需求,需要完成点击复制的功能,当文字过长的时候,让用户手拖再ctrl+c这种方式体验就不是很好了,如果可以点击一下直接复制就是一种不错的优化用户体验的方式。 经过查阅文档,网络上完成这个功能大多使用两大类方法 第一种是以document.execCom

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包