网站首页 > 技术文章 正文
分页这个东西, 其实更多的还是后端来弄, 但是由于公司项目的特殊性 我们是先访问接口,c#那边写下载程序,每天机器自启的时候,会自动重新下载每天最新的数据来覆盖之前的json数据.如果是内嵌在安卓里面的话 是安卓来下载.
首先为了项目的复用性 我在刚进公司的时候 就结合vue脚手架弄了一个基于公司业务的通用脚手架,这样其他同事在做其他项目的时候, 直接下载就好,就不用再重复写每个项目差不多的逻辑代码.下面的代码是基于公司项目的,跟网上的可能不一样
基于iscroll做了一个通用的滚动组件
vue的slot这个是个好东西, 代码不多说了, 大家肯定看得懂, 封装了这个之后就不用再去重复的new一个iscroll了,直接引用这个组件就行, 这里list是必传的.
在需要用到的父组件里面引用 传入pullUp为true
这样就会向外派发事scrollToEnd事件,滚动组件这一块逻辑就完了.这里shopItem其实就是li标签因为有很多页面都要用到 所以这里就抽成了一个组件,这里也可以把它做成函数组件来节约性能.
然后就是上拉加载数据了. 首先在data定义下面四个变量, 这里为啥要有showMore标志位呢,因为在滚动到底部的时候你是要去异步请求数据的这个中间有时间差,如果在这个时间差中, 我数据在请求而你这个时候又去滑了一下,这个结果可以想出来肯定是...对吧!所以我们需要一个标志位来确定我们是不是在请求数据当中.
然后我们在methods定义一个方法.
传入pageIndex页数, 在这个方法里面我们把data定义的pageIndex等于传进来的pageIndex(其实也就是data的pageIndex), data里面的pageList等于你的总数据(也就是上面的this.brandList),然后调用数组slice方法.弄完之后一定要记得把showMore置为false.
brandList是存放在vuex里面的shopList的副本, 那有的人可能有疑问了, 为啥要slice一下呢,这是怕代码写着写着就改变了shopList数组.还记得这个shopList是存放在vuex里面的吗. 在vuex里面改变数据只能通过mutation方式,所以这里是防止bug产生.顺便再放一张vuex流程图
最后就是我们的滚动到底部的逻辑.
我们这里判断showMore的状态只有false的时候,才去加载, 那有的人可能就有疑问了上面的showMore不是true吗, 在哪个地方置为false的,在activated生命周期的时候我们就去调用了一次loadMore方法,而在loadMore方法最后一行, 我们把它置为了false, 所以你第一次滚动到底部的时候, 这个时候showMore一定是false, 既然是false, 那么就会走第二个if判断, 在这个里面我们先把showMore置为true, 这个状态的操作一定要在调用loadMore方法之前.因为我们在loadMore方法里会再把它置为false,那么你下次滚动底部的时候才会继续走这个if判断.loadMore方法里面就会去对总数据做一个slice处理.那么为啥先讲第二个if呢, 因为这是按照我代码逻辑来的,我都是先写完功能,再来测试, 只要判断pageList数组长度大于等于总数据长度就return出去不要让它再执行就可以了.这样就前端模拟了分页处理.如果你想换个分页方式,也就是类似换一批这种,显示0-9,10-19,只显示当前页的数据,只要把loadMore方法第二行代码改一下
把pageIndex-1再乘以每页显示数据,这样就实现了点击换一批的逻辑.有的网站聚焦搜索框的时候右上角有一个换一换按钮, 这个分页其实就是前端实现的, 因为没必要点一次就去进行一次http请求
如果走的是api接口请求, 那就更简单了只需要传页数给后台就行, 前端这边只需要做标志位的处理就行.
最后只希望vue3.x早点结束beta可以正式进入production,早点结束我的mixins之旅.附上一张我的项目结构目录还是比较标准的.这个项目比较小所以mixin不是很多.之前涉及人脸语音的项目mixin几十个维护起来哎...
如果有人负责公司脚手架的,可以把脚手架做成命令行方式 ,通过vue create方式创建基于公司业务来创建项目,可以参考我github里面的cli仓库 直接克隆下来 改一下里面的代码 就跟vue这些脚手架一样了
https://github.com/nangongxiaomo/cli.欢迎大家指出错误 共同进步.下一篇来讲一下vue-awesome-swiper在vue中的坑
猜你喜欢
- 2025-06-09 为什么数字孪生开发选择UE5?高保真视觉与物理模拟的完美结合
- 2025-06-09 恒玄科技:公司为智能手表提供主控芯片和低功耗模拟前端
- 2025-06-09 晶华微:带ADC的多芯锂电池充放电管理模拟前端芯片有望在第三或第四季度推出
- 2025-06-09 「招标」瀚诺半导体模拟前端芯片IP核(二次)国内公开招标
- 2025-06-09 ADI推出带24位转换器内核的高度集成模拟前端
- 2024-09-29 如何使用React的useEffect Hook来模拟componentDidMount和。。。
- 2024-09-29 模拟实现JS的apply&call方法 js模拟post
- 2024-09-29 暖芯迦推出超低功耗六合一生理信号模拟前端芯片——九感BAF003
- 2024-09-29 高速adc模拟前端无源路仿真 adc前端电路设计详解
- 2024-09-29 恩智浦N-AFE模拟前端产品在工业自动化中的应用
你 发表评论:
欢迎- 502℃几个Oracle空值处理函数 oracle处理null值的函数
- 500℃Oracle分析函数之Lag和Lead()使用
- 496℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 491℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 482℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 474℃【数据统计分析】详解Oracle分组函数之CUBE
- 457℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 455℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (61)
- 前端数组 (73)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)