vue_分页组件

本文详细介绍了如何封装一个Vue分页组件,包括基本分页功能的实现,如数组chunk方法;页码显示策略,确保在不同情况下合理展示页码;以及分页器的完整功能,包括首尾翻页、快捷分页和分页按钮组,同时阐述了更多按钮的显示逻辑。
摘要由CSDN通过智能技术生成

封装的分页组件的结构如下:
在这里插入图片描述

1.基本分页功能

(1)将数组分为指定大小的多个小数组的chunk方法

export function chunk(arr=[],size=1){
   
    if(arr.length===0) return [];
    return arr.reduce((total,currentValue)=>{
   
        if(total[total.length-1].length===size){
   
            total.push([currentValue]);//当小数组的长度与指定大小size相等时,重新创建一个小数组
        }
        else{
   
            total[total.length-1].push(currentValue);//当小数组的长度小于指定大小size时,就往该小数组中添加数据
        }
        return total;
    },[[]])//[[]]是为了将分割后的小数组仍保留在一个大数组中
}

2.页码显示策略

为了方便地跳转到任意页码,却又不至于在页面中显示太多页码,页码不是始终全部显示出来的,而是在页码少时全部显示,页码多时只显示部分页码。这就存在显示策略问题。

(1)我们从当前页码出发,比如模块中当前页码是第5页:
在这里插入图片描述

那么以该页码为中心,两边显示一定的页码,比如两边各显示2页;

另外首页和尾页需要始终显示出来,方便回到首页和跳转到尾页;

首页到第3页中间的页码以及第7页到页尾的页码都隐藏起来,并且支持点击左/右更多按钮,快捷跳转多页(比如5页)的功能。

(2)如果只存在8页,则去掉右边的更多按钮:
在这里插入图片描述

(3)如果当前页码在第4页,则去掉左边的更多按钮,显示右边的更多按钮:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gx2vADTG-1601873508183)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201004152921208.png)]

简述如下:

(1)首页和尾页需要始终显示出来(如果只有1页则不显示尾页);

(2)除首尾页之外,当前页码左右最多只显示2页(共5页);

(3)其它页码折叠起来,用更多按钮(…)代替。

3.分页器

(1)分3步实现分页器功能:

1)实现首尾翻页

2)实现快捷分页

3)实现分页按钮组

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OJ0jHFGx-1601873508187)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201004153413448.png)]

(2)增加左/右按钮更多按钮的翻页功能

有了首尾页的翻页还不够,还需要继续完善更多按钮的快捷翻页功能。

先梳理下更多按钮的显示逻辑:

1)中间按钮一共5页,加上首尾按钮2页,一共7页,也就是说只有大于7页,才有可能显示更多按钮;

2)左右更多按钮会随着当前页码的不同而显示或隐藏,以第4页和倒数第4页为界;

3)当页码大于第4页时,应该显示左边更多按钮;

4)当页码小于倒数第4页,都应该显示右边更多按钮。

//Pager组件代码:

<template>
    <ul class="pager">
        <!--        首页-->
        <li class="number"
            :class="{active: this.current===1}"
            @click="setPage(1)">1</li>

        <!--        左边更多-->
        <li class="more left"
            v-if="totalPage>centerSize+2 && current-centerSize/2-1>1"
            @click="setPage(current-jumpSize)">...</li
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值