Vue 之 在当前页面的实现分页效果

目录

场景

假设,我们现在有这么一个需求:

上述图片的空白内容是活动的,由下面的两个按钮控制上一页、下一页;我们应该可以怎么去实现?

实现

思路:

其实这个问题,我们仿照其他的UI框架应该也可以获取大致思路,例如:element-ui;

可以将空白内容作为一个table的某一页数据,然后点击底部的分页组件的上一页或者下一页,来做到数据的切页效果。

这里使用vue element admin 中的一个综合table来看下效果图

这下有没有感觉顿时思路就来了

定义变量,当前页码currentPage、每页数据数量pageSize,总数据源列表dataList

点击按钮切换页码,监听页码的变化获取到当前页的数据,从而渲染到页面上。

注意点,这里建议使用计算属性computed,而不是监听属性watch,为什么?这是因为计算属性的一个特性:计算属性相比监听而言,计算属性具有缓存特性,直白的说,计算属性的依赖(也就是计算属性中所用到的变量)如果不变,那么计算属性不会被再次调用,从而进一步的提高性能。

代码如下:

javascript 复制代码
<template>
  <div>
    <!-- 数据列表 -->
    <ul>
      <li v-for="item in currentPageData" :key="item.id">{{ item.content }}</li>
    </ul>
    
    <!-- 分页控件 -->
    <button @click="prevPage" :disabled="currentPage === 1">上一页</button>
    <button @click="nextPage" :disabled="currentPage === totalPages">下一页</button>
  </div>
</template>
 
<script>
export default {
  data() {
    return {
      currentPage: 1,
      pageSize: 10,
      dataList: [], // 假设这是从服务器获取的数据列表
    };
  },
  computed: {
    totalPages() {
      return Math.ceil(this.dataList.length / this.pageSize);
    },
    currentPageData() {
      let start = (this.currentPage - 1) * this.pageSize;
      let end = start + this.pageSize;
      return this.dataList.slice(start, end);
    },
  },
  methods: {
    nextPage() {
      if (this.currentPage < this.totalPages) {
        this.currentPage++;
      }
    },
    prevPage() {
      if (this.currentPage > 1) {
        this.currentPage--;
      }
    },
  },
};
</script>

完结。

相关推荐
Dorcas_FE26 分钟前
【tips】动态el-form-item中校验的注意点
前端·javascript·vue.js
四岁爱上了她35 分钟前
input输入框焦点的获取和隐藏div,一个自定义的下拉选择
前端·javascript·vue.js
湖边看客3 小时前
antd x6 + vue3
开发语言·javascript·vue.js
Cassie燁3 小时前
element-plus源码解读1——useNamespace
前端·vue.js
Cassie燁5 小时前
el-button源码解读1——为什么组件最外层套的是Vue内置组件Component
前端·vue.js
北极糊的狐5 小时前
Vue3 子组件修改父组件传递的对象并同步的方法汇总
前端·javascript·vue.js
一 乐6 小时前
餐厅管理智能点餐系统|基于java+ Springboot的餐厅管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端
北极糊的狐6 小时前
父组件向子组件传参时,传递数组和对象类型的参数的方法
前端·javascript·vue.js
爱泡脚的鸡腿8 小时前
uni-app D6 实战(小兔鲜)
前端·vue.js
北极糊的狐8 小时前
Vue3 中父子组件传参是组件通信的核心场景,需遵循「父传子靠 Props,子传父靠自定义事件」的原则,以下是资料总结
前端·javascript·vue.js