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日

相关文章

  • 在安装完android程序以后“你的手机上未安装应用程序”的解决方案

    让我为你详细讲解如何解决“在安装完Android程序以后‘你的手机上未安装应用程序’”的问题。 问题描述 当你在手机上安装一个Android程序后,有时候你会发现你的手机上并没有安装该应用程序,而且也没有任何报错信息。这可能是由于Android系统的一些缓存问题导致的。 解决方案 以下是解决问题的完整攻略: 1. 清除Google Play Store的缓存…

    other 2023年6月25日
    00
  • 简单了解JAVA中类、实例与Class对象

    下面是详细讲解 “简单了解JAVA中类、实例与Class对象” 的完整攻略: 一、类 在Java中,类是对象的蓝图(blueprint),它定义了对象的属性(attribute)和方法(method)。类是一个模板,在使用之前必须被实例化。 类的定义格式: public class Person{ // 类的属性 private String name; p…

    other 2023年6月27日
    00
  • SQL Server2012在开发中的一些新特性

    SQL Server 2012新特性攻略 SQL Server 2012是微软推出的一款关系型数据库管理系统,引入了许多新特性和改进,提供了更强大和高效的开发功能。以下是SQL Server 2012在开发中的一些新特性的详细讲解: 1. 列存储索引 SQL Server 2012引入了列存储索引,它是一种针对大型数据仓库和分析工作负载的优化技术。与传统的行…

    other 2023年7月27日
    00
  • 如何在sqlite中创建自增字段

    如何在SQLite中创建自增字段 在SQLite中,我们可以使用自增字段实现自动编号,该字段可以避免插入重复的数据记录,并且方便我们进行数据管理和查询。本文将简单介绍如何在SQLite中创建自增字段。 1. 建立数据表 首先,我们需要建立一张数据表,例如: CREATE TABLE users ( id INTEGER PRIMARY KEY, name T…

    其他 2023年3月28日
    00
  • mininet是什么?

    Mininet是一个用于建立和测试软件定义网络(SDN)和网络功能虚拟化(NFV)的仿真工具。它提供一个虚拟化的网络环境,使用户可以在单个机器上创建一个网状拓扑结构,包括虚拟交换机、路由器、主机等,并进行各种网络测试、性能分析、应用开发等操作。本篇攻略将详细讲解Mininet的基本概念、安装方法、基本操作以及两个示例说明。 Mininet的基本概念 虚拟化网…

    其他 2023年4月16日
    00
  • .Net获取IP地址的方法

    .NET获取IP地址的方法攻略 在.NET中,你可以使用System.Net命名空间下的类和方法来获取IP地址。下面是一个详细的攻略,包含了两个示例说明。 步骤1:引用命名空间 首先,你需要在代码文件的顶部引用System.Net命名空间,以便使用相关的类和方法。你可以在代码文件的顶部添加以下代码: using System.Net; 步骤2:获取本地IP地…

    other 2023年7月31日
    00
  • Android 网络图片查看显示的实现方法

    Android 网络图片查看显示的实现方法攻略 在Android应用中,我们经常需要从网络上加载并显示图片。下面是一种实现方法的详细攻略,包含两个示例说明。 步骤一:添加依赖库 首先,我们需要在项目的build.gradle文件中添加以下依赖库: implementation ‘com.squareup.picasso:picasso:2.71828’ 这将…

    other 2023年8月21日
    00
  • Android开发之自定义控件用法详解

    Android开发之自定义控件用法详解 在Android开发中,我们通常会使用系统提供的各种控件来实现界面的显示与交互,但是有时候它们并不能完全满足我们的需求,这时候就需要用到自定义控件了。本文将详细讲解如何创建自定义控件,并在实际开发中使用它们。 什么是自定义控件 自定义控件就是在系统提供的控件的基础上,通过我们自己编写的代码来实现某个特定的功能或者样式。…

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