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日

相关文章

  • centos_serverwithgui入门

    CentOS Server with GUI 入门攻略 CentOS是一种流行的Linux操作系统,它是基于Red Hat Enterprise Linux(RHEL)源代码构建的。CentOS Server with GUI是CentOS的一个版本,包含了图形用户界面(GUI),可以方便地进行系统管理和配置。在本攻略中,我们将介绍如何安装和配置CentOS…

    other 2023年5月6日
    00
  • linux下设定环境变量的方法介绍

    当我们使用Linux时,经常需要设置环境变量来定义默认路径、库和一些其他信息。环境变量是值/路径对,通过该值可以直接在系统中引用路径、库等信息。本文将介绍如何在Linux中设置环境变量的方法。 1. 查看环境变量 在Linux中,我们可以使用env命令来查看已设置的环境变量。可以在终端中输入以下命令: env 这会显示系统中所有的环境变量,以键=值的形式列出…

    other 2023年6月27日
    00
  • 适合初学者的C语言转义字符讲解

    以下是“适合初学者的C语言转义字符讲解”的完整攻略。 适合初学者的C语言转义字符讲解 C语言中的转义字符是一种特殊的字符,它们以反斜杠(\)作为前缀,用于表示一些无法输入的字符或控制字符。转义字符可以让我们在程序中表示出一些特殊的字符或者控制字符,从而丰富程序的输出效果。 常见的转义字符 下面是一些常见的转义字符及其对应的表示意义: 转义字符 含义 \\ 反…

    other 2023年6月20日
    00
  • ios延时执行的四种方法

    以下是详细讲解“iOS延时执行的四种方法的完整攻略”的标准Markdown格式文本,包含两个示例说明: iOS延时执行的四种方法的完整攻略 在iOS开发中,有时需要延时执行某些代码,例如延时加载数据、延时执行动画等。本攻将介绍iOS延时执行的四种方法。 方法一:使用GCD的dispatch_after函数 使用GCD的dispatch_after函数可以实现…

    other 2023年5月10日
    00
  • 单位(Units)

    单位(Units)的完整攻略 单位(Units)是用于测量和表示物理量的标准化量度。在科学和工程领域,我们经常需要使用不同的单位来描述和比较各种物理量。本攻略将详细介绍单位的基本概念、常见的国际单位制(SI)以及如何进行单位转换。 基本概念 单位是用来表示物理量的量度标准。它们提供了一种统一的方式来测量和比较不同的物理量。单位通常由两部分组成:数值和单位符号…

    other 2023年10月15日
    00
  • PHP递归遍历指定目录的文件并统计文件数量的方法

    下面是PHP递归遍历指定目录的文件并统计文件数量的详细攻略。 确定要遍历的目录 首先要明确要遍历的目录是哪个,可以通过指定目录的绝对或相对路径来实现。例如: // 指定绝对路径 $dir = "/var/www/html"; // 指定相对路径 $dir = "./uploads"; 编写递归函数 接下来,编写一个递归…

    other 2023年6月27日
    00
  • Swift如何在应用中添加图标更换功能的方法

    下面是Swift在应用中添加图标更换功能的方法的完整攻略。 准备工作 在开始之前,需要准备以下两个图标: 应用主图标,大小为180×180,命名为AppIcon.png 应用备用图标,大小为180×180,命名为AppIcon-Alternate.png 这两个图标需要添加到项目的Assets.xcassets里。 添加代码 以下代码实现了在应用设置页面中添…

    other 2023年6月27日
    00
  • vue右键菜单的简单封装

    针对“vue右键菜单的简单封装”,我会提供以下完整攻略,帮助你更好地理解: 1. 首先介绍vue-contextmenu组件 vue-contextmenu 是基于Vue.js的右键菜单组件,可帮助我们快速创建自定义的右键菜单。该组件的特点包括: 右键菜单是命令式的,可以方便的控制每一个条目的行为。 提供了简单的API,便于开发者自定义右键菜单的样式和行为。…

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