如何在vue中封装Element分页组件

如何在vue中封装一个Element分页组件,主要有有3个步骤。

1、安装 Element

npm i element-ui -S

在main.js中引入Element

import ElementUI from 'element-ui';

import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

2、封装分页页面。

<template>
  <div class="block" :style="{ 'white-space': 'nowrap','padding': '2px 5px','color': '#303133','font-weight': '700','text-align': 'center' }">
    <el-pagination
      layout="total, sizes, prev, pager, next, jumper"
      :total="pager.total"
      :current-page.sync="currentPage"
      :page-size="pager.rows"
      :page-sizes="[20, 30, 40, 50]"
      prev-text="上一页"
      next-text="下一页"
      @size-change="onChangeSize"
      @current-change="onChangePage">
    </el-pagination>
  </div>
</template>
<script>
export default {
  name: 'Pagination',
  props: ['pager'],
  computed: {
    total() {
      return this.pager.total;
    },
    // 检测是否获取到无数据
    initBack() {
      return this.pager.total / this.pager.rows < this.pager.page;
    },
  },
  data() {
    return {
      currentPage:1
    }
  },
  watch: {
    total() {
      // 存在记录但未获取到数据时, 重新请求
      if (this.initBack) {
        this.pager.page -= 1;
        this.$emit('change');
      }
    },
  },
  mounted() {},
  methods: {
    // 每页条数
    onChangeSize(rows) {
      this.pager.rows = rows;
      this.$emit('change');
    },
    // 翻页
    onChangePage(page) {
      this.pager.page = page;
      this.$emit('change');
    }
  }
}
</script>

3、在需要的列表页码引入组件,传入参数。

页面展示:

<pagination :pager="pager" @change="getItemList"></pagination>

引入组件:

import Pagination from '@/components/Pagination'

components: { Pagination }

传参:

//定义分页对象
pager: {
       total: 0,
       page: 1,
       rows: 20,
      },


//传参
queryPageList().then(res => {
      const data = res.data;
      this.tableData = data.recordList;
      this.pager.total=data.totalCount
      this.pager.page=data.beginPageIndex
 });

把查到的列表数据的数量信息,赋给pager对象,即实现动态传参。

翻页:

getItemList() {
      //列表查询
      queryPageList().then(res => {
        const data = res.data;
        this.tableData = data.recordList;
        this.pager.total=data.totalCount
        this.pager.page=data.beginPageIndex
        });
    }

以上3步就完成了分页组件的分装,在需要的页面引入,传入相应的参数即可。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3封装分页组件的方法与Vue2有所不同。以下是一个基本的封装分页组件的方法: 1. 首先,在你的项目创建一个名为`Pagination.vue`的组件文件。 2. 在`Pagination.vue`组件,你可以使用`<template>`标签来定义组件的结构。可以使用`<div>`标签来包裹分页组件的内容,比如页码和按钮。 3. 在`<script>`标签,你需要导入`vue`并声明组件。你可以使用`ref`来追踪当前页码,并且使用`computed`属性来计算总页数。 4. 在组件内部,你可以创建一个`methods`对象,并在其定义一些方法来处理页码的变化。比如,你可以创建`goToPage`方法来跳转到指定的页码。 5. 最后,在`<style>`标签,你可以定义组件的样式,如页码的颜色和按钮的样式。 在你的项目使用这个封装分页组件的方法如下: 1. 在需要使用分页功能的组件,使用`import`关键字导入刚刚封装的`Pagination`组件。 2. 在`components`属性注册`Pagination`组件。 3. 在`<template>`标签使用自定义的分页组件。可以使用`v-model`指令来双向绑定当前页码。 通过上述步骤,你就可以在Vue3封装一个分页组件并在项目使用了。这个组件可以提供分页功能,让用户可以方便地切换页码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [基于Vue如何封装分页组件](https://download.csdn.net/download/weixin_38550605/12789728)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Vue3 element-ui实现Pagination分页组件--封装分页](https://blog.csdn.net/coinisi_li/article/details/128952886)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值