一文带你了解如何高效实现下拉分页

1,038 阅读4分钟

1 为什么选下拉分页

公司最近缺人手,职位放开后,涌现出了很多简历。但HR和组长最终筛选出了一份很不错的,觉得很靠谱的妹子的简历,简历上写的姓名叫:赵丽影。我们还是很期待的,约的昨天下午面试。

面试的时候,让我去面,我就和小组内商量着,丽影来了,得给个机会啊,别问那些有的没的面试题了,但又不能太过于简单。后来,老张说:我正在做下拉分页的功能,让她直接实现一下。差不多就得了呗,赶紧来吧,团队缺少丽影这样的工程师啊。

2 高效实现下拉分页

正好昨天下午3点,丽影来了,穿着小碎花裙子,梳着马尾辫,

很客气的说:面试官你好。

我说:你好。

丽影:我做个自我介绍吧!

我说:不用,你有对象了吗?

丽影:没有呢

我说:你的简历上都有介绍,不用自我介绍了,我们直接开始面试吧。

丽影:好的

我说:你做过下拉分页吗?

丽影:迟疑了一下,做过

我说:手写可以吗?

丽影:在电脑上当场实现吗?

我说:不用,给你一张A4纸

丽影:这。。。

我说:不行吗?

丽影:保证高效完成。

2.1 纸质手写代码

后来,我给丽影拿了一张A4白纸,然后我就离开了,让丽影自己在会议室里写,我还给丽影端了一杯自来水。过了一会儿,我又进会议室,看到丽影已经写完了。

给大家看一下丽影写的手写代码片段

image.png

2.2 上机高效实现代码

看来真不该听老张的,搞什么手写,我也没看太懂,所以想让丽影上机实现一下,所以我给他打开了一个Vue2的项目。丽影是这样做的

2.2.1 安装js-tool-big-box工具库

执行安装命令

npm install js-tool-big-box

引入 browserBox 对象,判断浏览器滚动方向和距离的公共方法,在这个对象下面

import { browserBox } from 'js-tool-big-box';
2.2.2 定义初始化滚动高度

使用判断浏览器滚动方向和距离的公共方法呢,我们需要在项目中,先初始化一下滚动高度,刚开始可以设置为0即可。

data () {
    return {
        lastScrollTop: 0, // 初始化滚动高度
    }
},
2.2.3 添加滚动监听事件

我们需要在mounted钩子函数中,添加监听页面滚动的事件,代码如下:

mounted() {
    window.addEventListener('scroll', this.handleScroll);
},
2.2.4 使用方法便捷高效完成下拉分页
methods: {
    handleScroll() {
      let lastScrollTop = this.lastScrollTop;
      let scrollInfo = browserBox.getScrollInfo(lastScrollTop);
      this.lastScrollTop = scrollInfo.lastScrollTop;
      console.log('检测滚动的对象信息:', scrollInfo);
    },
}
2.2.5 实现效果

image.png

2.2.6 方法使用说明

使用这个方法,

1 我们需要在项目中初始化一个外部的初始化高度,默认为0就可以,就是以上代码中的 lastScrollTop

2 browserBox.getScrollInfo方法呢,需要传入lastScrollTop值,并且没有获取到最新的返回值后,还需要将返回值中的lastScrollTop再次赋值给lastScrollTop

3 scrollInfo的返回值是一个对象,包括3个内容,

第一个值是scrollDirection,值为 down || up
第二个值是lastScrollTop,表示当前距离浏览器顶部的距离,最小为0
第三个值是scrollBottom,表示当前浏览器距离底部的距离,最小为0

这样,当页面滚动到底部还有一定的距离后,就可以判断是否需要加载下一页了。

3 初识丽影

就这样,丽影第二天来上班了。我们都很好奇,丽影的简历那么好,能够从几百份简历中杀出重围,是如何做到的。

丽影说,我手写下拉分页的时候,不是用了一个js-tool-big-box的工具库嘛,然后我看见他下面有个链接,我就是照着改了改。之前投出去总是没有回音,我总以为是招聘公司少了,或者职位少了,自从我照着上面的内容改了后,联系我的公司就多了,真的。给你这个链接,希望对你有帮助

点我:(js-tool-big-box - npm (npmjs.com))