1 为什么选下拉分页
公司最近缺人手,职位放开后,涌现出了很多简历。但HR和组长最终筛选出了一份很不错的,觉得很靠谱的妹子的简历,简历上写的姓名叫:赵丽影。我们还是很期待的,约的昨天下午面试。
面试的时候,让我去面,我就和小组内商量着,丽影来了,得给个机会啊,别问那些有的没的面试题了,但又不能太过于简单。后来,老张说:我正在做下拉分页的功能,让她直接实现一下。差不多就得了呗,赶紧来吧,团队缺少丽影这样的工程师啊。
2 高效实现下拉分页
正好昨天下午3点,丽影来了,穿着小碎花裙子,梳着马尾辫,
很客气的说:面试官你好。
我说:你好。
丽影:我做个自我介绍吧!
我说:不用,你有对象了吗?
丽影:没有呢
我说:你的简历上都有介绍,不用自我介绍了,我们直接开始面试吧。
丽影:好的
我说:你做过下拉分页吗?
丽影:迟疑了一下,做过
我说:手写可以吗?
丽影:在电脑上当场实现吗?
我说:不用,给你一张A4纸
丽影:这。。。
我说:不行吗?
丽影:保证高效完成。
2.1 纸质手写代码
后来,我给丽影拿了一张A4白纸,然后我就离开了,让丽影自己在会议室里写,我还给丽影端了一杯自来水。过了一会儿,我又进会议室,看到丽影已经写完了。
给大家看一下丽影写的手写代码片段:
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 实现效果
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的工具库嘛,然后我看见他下面有个链接,我就是照着改了改。之前投出去总是没有回音,我总以为是招聘公司少了,或者职位少了,自从我照着上面的内容改了后,联系我的公司就多了,真的。给你这个链接,希望对你有帮助