【VUE】实现分页组件_vue页码无法切换,看这篇文章就行了

20 阅读3分钟

文末

我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。

首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。

更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。

前端面试题汇总

JavaScript

性能

linux

前端资料汇总

开源分享:docs.qq.com/doc/DSmRnRG…

注意: 由于子组件不能直接改变父组件的值, 所以在引用该分页组件的父组件中,

可以写入 :changePage.sync=“page”,

每当page改变时 采用this.$emit(“changePage”, value) 传入value来改变page

📕创建分页数组

在Vue计算属性中得出总页数 totalPages

totalPages(){
	return Math.ceil(this.count / this.paeg_size)
}

在Vue计算属性中得出两个值, beforePages afterPages 代表最小值最大值(第一页与最后一页除外)

beforePages(){
	return this.page -2
}

afterPages(){   
    return this.page + 2
},

我们规定总是显示当前页的前两页和后两页.

重点来了, 在Vue属性中创建分页数组

  • 添加第一页和最后一页

    • 首先我们规定的beforePage=page-2, 当beforepage > 1 时, 即page > (1+2) , 这个时候就需要添加第一页 .

    最后一页同理

  • 什么时候添加省略呢?

  • 我们还规定当totalPage总页数小于等于5页时,展示所有页码 ,

当totalPage > 5,并且beforePage=page-2>=3或者afterPage=page+2<=totalPage-2时添加省略.

当totalPage < 5,如图所示:

在这里插入图片描述
我们需要把前省略替换成2 后省略替换成4

pageall(){
    let arr=[]
    for(let everyPages = this.beforePages; everyPages <= this.afterPages; everyPages++) {
        if(everyPages > this.totalPages) {
            continue;
        }
        if(everyPages <= 0){
            continue;
        }
       arr.push(everyPages)
    }
    // 添加第一页
    if(this.page > 3 {
        arr.unshift(1)
    }
    // 添加最后一页
    if(this.page < this.totalPages-2) {
        arr.push(this.totalPages)
    }
    //添加前省略
    if(this.page >= 5) {
    	if(this.totalPages > 5) {
    		arr.splice(1,0,'...')
    	}else{
    		arr.splice(1,0,2)
    	}
    }
    //添加后省略
    if(this.page <= this.totalPages-4) {
    	if(this.totalPages > 5) {
    		arr.splice(arr.length-1,0,"...")
    	}else{
    		arr.splice(arr.length-1,0,4)
    	}
   }
    return arr
}

📒切换页码

现在数组已经完成, 还需要添加上点击切换页码的方法.

点击下一页👇🏻

jia(){
	this.$emit('update:changepage',  this.page + 1)
}

点击上一页👆🏻

jian(){
	this.$emit('update:changepage',  this.page - 1)
}

点击任意一页

res_page(value){
	if(value!=="..."){
		this.$emit('update:changepage',  value)
	}V
}

在输入框内输入页码,按Enter键跳转

activePage(e){
    if(e.target.value > this.totalPages) {
        this.$emit('update:changepage', this.totalPages)
    }else if(e.target.value <= 0) {
        this.$emit('update:changepage', 1)
    }else{
        this.$emit('update:changepage', e.target.value - 0)
    }
    e.target.value = ""
    e.target.blur()
}

📖CSS

最后附上CSS代码

       .paging {
            width: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            color: #657180;
            ul {
                padding: 5px;
                display: inline-flex;
                background-color: #FFF;
                li {
                    width: 40px;
                    height: 40px;
                    margin: 0 2px;
                    border-radius:5px;
                    border: 1px solid #d7dde4;
                    list-style: none;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    caret-color: transparent;
                    cursor:pointer;
                }
                li:first-child{
                    width: 80px;
                    border-radius: 40px 0 0 40px;
                    span {
                        color: #000000;
                    }
                }
                li:last-child{
                    width: 80px;
                    border-radius: 0 40px 40px 0;
                    span {
                        color: #000000;
                    }
                }
                li:hover {
                    color: #00a1d6;
                    transition: all 0.5s;
                    border-color: #00a1d6;
                }
                .ellipsis {
                    border: none;
                }
                .ellipsis:hover {
                    color: #657180;
                }
                .active{
                    background-color: #00a1d6;
                    color: #FFF;
                }
            }
            .sum {
                margin-left: 30px;
            }
            span{
                font-size: 13px;
                color: #99a2aa;
            }
            input {
                height: 30px;
                width: 60px;
                border-radius: 5px;
                border: 1px solid #d7dde4;
                margin: 0 10px;
其实前端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。



这里再分享一个复习的路线:(以下体系的复习资料是我从各路大佬收集整理好的)

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://docs.qq.com/doc/DSmRnRGxvUkxTREhO)**

《前端开发四大模块核心知识笔记》  

![](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/251b61647b51412e907ae079d10c8335~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1771315136&x-signature=i8RxhwcVaj9H3XFfmbxrlCbIEbY%3D)



最后,说个题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。



我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。