Vue第30篇,前端分页技术解析:Vue + Element UI 实现高效数据展示(vue前端分页,el分页,el-pagination分页,Element分页)

文章介绍了前端开发者如何在后端提供一次性数据的情况下,使用JavaScript的数组.slice方法进行前端分页处理。通过设置分页参数,如总条数、每页大小和当前页数,结合事件监听函数handleSizeChange和handleCurrentChange,动态更新显示数据。
摘要由CSDN通过智能技术生成

前言

在现代Web应用中,数据量庞大,一次性加载所有数据,不仅会增加页面加载时间,还会消耗过多的网络资源和客户端内存。因此,分页技术成为了优化用户体验和提高性能的关键手段之一。而作为一名前端开发,分页功能我们经常会用到,而且有时候,后端会把数据一次性给我们,需要我们自己处理数据,做前端分页。这里详细介绍下如何使用 VueJS 结合Element UI的分页组件实现前端分页,并通过一个具体的例子来展示其实现过程。


一、前端分页具体实现过程

1. 首先,我们来看一段使用VueJS和Element UI实现前端分页的HTML代码示例:

<!-- 搜索分页 -->
<el-pagination
  @size-change="handleSizeChange"
  @current-change="handleCurrentChange"
  layout="total, sizes, prev, pager, next, jumper"
  :page-size="pageSize"
  :page-sizes="[6, 12, 18, 24]"
  :current-page="currentPage"
  :total="total"
>
</el-pagination>



<!-- 分页注释 -->
@size-change="handleSizeChange"                     // 页面大小变化时的处理方法
@current-change="handleCurrentChange"               // 当前页变化时的处理方法
:page-sizes="[10, 20, 30, 40, 50]"                  // 可选择的每页显示数量
layout="total, sizes, prev, pager, next, jumper"    // 分页组件布局
:current-page="currentPage"                         // 当前页
:page-size="pageSize"                               // 每页显示数量
:total="total"                                      // 总数据量

2. 在Vue组件的数据属性中,我们定义了以下变量:

// 分页参数
total: 0, // 总记录数
pageSize: 6, // 每页显示的记录数
currentPage: 1, // 当前页码
searchList: [], // 存储所有查询结果的数组
padingList: [], // 根据当前页码和每页记录数计算出的待展示数据

3. 接下来,我们看下choseSearch函数,它是处理数据请求和分页的核心:

// 点击搜索
choseSearch() {
  searchTitle(this.searchCon).then((res) => {
    // 将服务器返回的数据存储在searchList中
    const data = res.rows;
    this.total = res.total; // 更新总记录数
    this.searchList = data; // 更新所有数据列表

    // 前端分页,关键一步;
    this.padingList = this.searchList.slice(
      (this.currentPage - 1) * this.pageSize,
      this.currentPage * this.pageSize
    );

  });
},},

4. 最后,我们来看看分页事件处理器:

// 分页函数
handleSizeChange(val) {
  console.log(`每页 ${val} 条`);
  this.pageSize = val; // 更新每页显示记录数
  this.choseSearch(); // 重新加载数据
}

handleCurrentChange(val) {
  console.log(`当前页: ${val}`);
  this.currentPage = val; // 更新当前页码
  this.choseSearch(); // 重新加载数据
}

二、分页原理详解

  1. 数据获取: 当用户执行搜索操作时,choseSearch函数被调用。该函数向服务器发送请求,获取数据并存储在searchList中,同时更新total记录总数。

  2. 分页计算: 在choseSearch函数中,通过slice方法对searchList进行切片操作,根据当前页码currentPage和每页记录数pageSize计算出padingList,即当前页需要展示的数据。

  3. 事件监听: 使用Element UI的<el-pagination>组件,通过@size-change@current-change事件监听器,当用户更改每页显示记录数或切换页面时,分别调用handleSizeChangehandleCurrentChange函数。这两个函数都会更新相应的状态,并再次调用choseSearch函数,重新计算padingList


三、可以看下图例

1. 分页标签与属性

3dd18cf963ef4ef2ab47e40c6cbbd474.png

2. 定义相关数据属性

0b58534c5c524c7082eae65602208b19.png

3. 请求接口后返回总数据,然后对数据进行筛选处理 ,计算筛选后,循环展示padingLsit,就可以了(关键一步)

dc6a76bff48546399c92c4dabcf66f10.png

4. 分页相关功能,点击分页时,赋值,调用相关接收数据方法,重新渲染

12843c3f674f423b9d44a1316db4fcfb.png


四. 完整代码

<!-- 搜索分页 -->
<el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          layout="total, sizes, prev, pager, next, jumper"
          :page-size="pageSize"
          :page-sizes="[6, 12, 18, 24]"
          :current-page="currentPage"
          :total="total"
        >
</el-pagination>
// 分页参数
total: 0,//总数
pageSize: 6, //每页多少条数据
currentPage: 1, //当前页
searchList: [],//用来接收总数据
padingList: [], //计算后需要展示的页面数据




// 点击搜索
choseSearch() {
      searchTitle(this.searchCon).then((res) => {
        // console.log(res);
        const data = res.rows;
        this.total = res.total;
        this.searchList = data;
        // 前端分页,关键一步;
        this.padingList = this.searchList.slice(
          (this.currentPage - 1) * this.pageSize,
          this.currentPage * this.pageSize
        );
      });
},},
// 分页函数
handleSizeChange(val) {
      console.log(`每页 ${val} 条`);
      this.pageSize = val;
      this.choseSearch();
},
handleCurrentChange(val) {
      console.log(`当前页: ${val}`);
      this.currentPage = val;
      this.choseSearch();
},      

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue Element UI提供了el-pagination组件来实现表格数据分页功能。以下是实现步骤: 1. 在Vue组件中引入el-pagination组件并定义分页属性 ``` <template> <div> <el-table :data="tableData" border> //表格内容 </el-table> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"> </el-pagination> </div> </template> <script> export default { data() { return { tableData: [], //表格数据 total: 0, //总记录数 pageSize: 10, //每页记录数 currentPage: 1 //当前页码 }; }, methods: { handleSizeChange(val) { this.pageSize = val; this.getData(); }, handleCurrentChange(val) { this.currentPage = val; this.getData(); }, getData() { //获取数据,并更新this.tableData和this.total } } }; </script> ``` 2. 在el-pagination组件中绑定事件和属性 - @size-change:当每页显示条数改变时触发的事件,调用handleSizeChange方法更新pageSize并重新获取数据。 - @current-change:当当前页码改变时触发的事件,调用handleCurrentChange方法更新currentPage并重新获取数据。 - :current-page:当前页码,绑定到currentPage属性。 - :page-sizes:每页显示条数数组,可以自定义,默认为[10, 20, 30, 40]。 - :page-size:每页显示条数,绑定到pageSize属性。 - layout:分页组件布局。其中total表示总记录数,sizes表示每页显示条数选择器,prev表示上一页按钮,pager表示页码按钮,next表示下一页按钮,jumper表示跳转输入框和确定按钮。 - :total:总记录数,绑定到total属性。 3. 在getData方法中获取数据并更新表格数据和总记录数 ``` getData() { //计算分页查询的参数 const start = (this.currentPage - 1) * this.pageSize; const limit = this.pageSize; //发起分页查询请求 axios.get('/api/data', { params: { start, limit } }).then(response => { this.tableData = response.data.rows; //更新表格数据 this.total = response.data.total; //更新总记录数 }); } ``` 以上就是使用Vue Element UI实现表格数据分页功能的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北城笑笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值