Vue开发之封装分页组件与使用示例

Vue开发之封装分页组件与使用示例

1. 简介

在Vue项目中,我们常常需要使用到分页组件来进行数据的展示与分页处理。因此,我们可以封装一个分页组件,来减少重复的页面编写工作。本文将讲解如何封装一个Vue分页组件,并提供使用示例。

2. 封装分页组件

我们可以基于Element UI中的Pagination组件来封装我们自己的分页组件。首先,在components文件夹下创建Pagination.vue文件,然后在文件内部编写如下代码:

<template>
  <div class="pagination">
    <el-pagination
      @current-change="pageChange"
      :current-page="currentPage"
      :page-sizes="[10, 20, 50, 100]"
      :page-size="pageSize"
      :total="total"
      layout="total, sizes, prev, pager, next, jumper"
    />
  </div>
</template>

<script>
export default {
  name: "Pagination",
  props: {
    currentPage: {
      type: Number,
      default: 1
    },
    pageSize: {
      type: Number,
      default: 10
    },
    total: {
      type: Number,
      default: 0
    }
  },
  methods: {
    pageChange(page) {
      this.$emit("page-change", page);
    }
  }
};
</script>

<style>
.pagination {
  margin-top: 20px;
  text-align: right;
}
</style>

该分页组件中使用了Element UI中的Pagination组件,并且通过props接收传入的当前页码、每页显示条数和总条数等参数,同时将当前页码的变化事件通过自定义事件向父组件发送。需要注意的是,Pagination组件中的layout属性可以自定义显示组件的顺序以及是否隐藏某些组件。

3. 使用示例

下面将通过两个使用示例来展示分页组件的使用方法。

示例1:使用Pagination.vue组件

在需要使用分页组件的.vue文件中,可以通过如下方式引入和使用Pagination组件:

<template>
  <div>
    <!-- 显示数据列表 -->
    <table class="table" v-if="tableData.length">
      <!-- 省略表格头部 -->
      <tbody>
        <tr v-for="(item, index) in tableData" :key="index">
          <!-- 省略数据单元格 -->
        </tr>
      </tbody>
    </table>
    <!-- 显示分页组件 -->
    <pagination
      v-if="tableData.length"
      :current-page="page"
      :page-size="pageSize"
      :total="total"
      @page-change="handleChange"
    />
  </div>
</template>

<script>
import Pagination from "@/components/Pagination.vue";

export default {
  name: "Example1",
  components: { Pagination },
  data() {
    return {
      page: 1, // 当前页码
      pageSize: 10, // 每页显示条数
      total: 0, // 总条数
      tableData: [] // 数据列表
    };
  },
  created() {
    // 获取数据列表
    this.getDataList();
  },
  methods: {
    getDataList() {
      // 省略从后台获取数据列表的代码
      // 获取到的数据存储在tableData中
      this.tableData = [...];
      this.total = 100; // 设置总条数
    },
    handleChange(page) {
      this.page = page; // 修改当前页码
      this.getDataList(); // 重新获取数据列表
    }
  }
};
</script>

在该示例中,我们使用了Pagination.vue组件来展示分页组件,并且通过监听page-change事件来获取当前页码,并重新获取数据列表。

示例2:封装Pagination组件

为了减少重复的代码编写工作,我们可以在Vue项目全局注册Pagination组件,并在需要使用的.vue文件中直接使用。具体步骤如下:

  1. 在src/main.js文件中引入Pagination组件
import Pagination from '@/components/Pagination.vue'

Vue.component('Pagination', Pagination)
  1. 在需要使用的.vue文件中直接使用Pagination组件
<template>
  <div>
    <!-- 显示数据列表 -->
    <table class="table" v-if="tableData.length">
      <!-- 省略表格头部 -->
      <tbody>
        <tr v-for="(item, index) in tableData" :key="index">
          <!-- 省略数据单元格 -->
        </tr>
      </tbody>
    </table>
    <!-- 显示分页组件 -->
    <pagination
      v-if="tableData.length"
      :current-page="page"
      :page-size="pageSize"
      :total="total"
      @page-change="handleChange"
    />
  </div>
</template>

<script>
export default {
  name: "Example2",
  data() {
    return {
      page: 1, // 当前页码
      pageSize: 10, // 每页显示条数
      total: 0, // 总条数
      tableData: [] // 数据列表
    };
  },
  created() {
    // 获取数据列表
    this.getDataList();
  },
  methods: {
    getDataList() {
      // 省略从后台获取数据列表的代码
      // 获取到的数据存储在tableData中
      this.tableData = [...];
      this.total = 100; // 设置总条数
    },
    handleChange(page) {
      this.page = page; // 修改当前页码
      this.getDataList(); // 重新获取数据列表
    }
  }
};
</script>

通过封装和全局注册Pagination组件,我们可以在每个.vue文件中直接使用Pagination组件,减少代码编写工作,并提高代码的复用性。

4. 总结

本文讲解了如何使用Element UI的Pagination组件和Vue.js技术,来封装一个分页组件,并提供了两个使用示例。通过学习本文,相信大家已经掌握了封装分页组件的技巧和方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue开发之封装分页组件与使用示例 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • Asp.net 获取指定目录下的后缀名为”.doc” 的所有文件名和文件路径

    获取指定目录下的后缀名为 “.doc” 的所有文件名和文件路径,可以使用C#语言在Asp.net环境下完成。下面是实现步骤: 步骤一:引入命名空间 using System.IO; 步骤二:编写代码获取所有文件路径 string folderPath = @"C:\test"; string[] files = Directory.Get…

    other 2023年6月26日
    00
  • 不升级都不行 Windows 10 Build 10074版下载地址(32位/64位)

    不升级都不行 Windows 10 Build 10074版下载地址(32位/64位)攻略 Windows 10 Build 10074是Windows 10操作系统的一个早期版本,如果你想尝试这个版本,下面是一个详细的攻略,包含了下载地址和两个示例说明。 下载地址 你可以从以下链接下载Windows 10 Build 10074的32位和64位版本: 32…

    other 2023年8月4日
    00
  • Win10 Mobile正式版推送 升级版本号为10.0.10586.107

    以下是关于“Win10 Mobile 正式版推送,升级版本号为 10.0.10586.107”的完整攻略,包含了两个示例说明。 升级版本号 根据消息,Win10 Mobile 正式版的升级版本号确定为 10.0.10586.107。这意味着在推送升级时,Win10 Mobile 的版本号将从当前版本升级到 10.0.10586.107。 示例说明 示例一:W…

    other 2023年8月2日
    00
  • JavaScript中变量的作用域详解

    JavaScript中变量的作用域详解 在JavaScript中,变量的作用域决定了变量在代码中的可见性和访问性。了解变量的作用域对于编写可维护和可扩展的代码非常重要。本攻略将详细讲解JavaScript中变量的作用域。 全局作用域 全局作用域是指在代码的任何地方都可以访问的变量。在JavaScript中,如果变量在任何函数之外声明,它就是一个全局变量。 示…

    other 2023年7月29日
    00
  • BooStrap对导航条的改造实践小结

    BooStrap对导航条的改造实践小结 概述 在实际网站开发中,导航条是常见且重要的组件之一。Bootstrap是一个流行的前端框架,提供了丰富的样式和组件,可以用于快速构建响应式网站。本文将介绍如何利用Bootstrap对导航条进行改造,并提供两个示例说明。 步骤 下面是改造导航条的步骤: 1. 引入Bootstrap 首先,在网站的HTML文件中引入Bo…

    other 2023年6月28日
    00
  • 易语言实现截图或右键二维码识别的代码

    下面是“易语言实现截图或右键二维码识别的代码”的完整攻略。 介绍 易语言是一个简单易学的编程语言,适用于初学者和小型项目。在这篇攻略中,我们将讨论如何使用易语言实现截图和识别二维码的功能。这些功能对于网站的体验和用户交互有重要作用。 我们将首先介绍如何实现截图,然后再详细讨论如何使用易语言识别二维码。 实现截图的代码 下面是一个简单的易语言程序,用于在Win…

    other 2023年6月27日
    00
  • python多环境切换及pyenv使用过程详解

    Python多环境切换及pyenv使用过程详解 什么是Python多环境切换 Python多环境就是在一台机器上安装不同版本的Python,并能在不同项目中使用不同版本的Python执行环境。这个功能的好处就是代码可以在不同的Python版本中运行测试,可以让Python项目更加灵活多变。 pyenv是什么 pyenv是一个Python多版本管理器,可以让您…

    other 2023年6月27日
    00
  • 解析Linux内核与设备树的编译和烧写

    解析Linux内核与设备树的编译和烧写的完整攻略如下: 1. 编译内核 1.1 下载内核源码 首先,需要从官网或者Github等代码托管网站上下载所需的内核代码。以Linux的官网(https://www.kernel.org/)为例,进入网站后点击”Get started”按钮,下拉菜单中选择”Download kernel”,选择需要的版本和压缩方式下载…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部