项目练习-头条新闻Day04-底部加载更多list列表-分页写法利用时间戳-合并网络请求

164 阅读2分钟

1.底部加载更多List列表包裹使用

1.1组件选择

瀑布流滚动加载,用于展示长列表,当列表即将滚动到底部时,触发事件并加载更多列表项。 选择list列表组件,onload方法根据自己需求进行书写

属性是否➕冒号的情况:

image.png

1.2请求下一页数据---分页

分页写法:利用时间戳 第一次:系统时间timestamp->后台返回0-9条数据->把当前请求返回的时间戳再赋值给pre_timestamp值this.theTime = res.data.data.pre_timestamp 第二次:timestamp上一次pre_timestamp(从指定的时间戳再往后找10个)10-19条,20条,pre_timestamp返回...依次类推

此时list中的数据,应该是数组拼接的结果 this.list = [...this.list, ...res.data.data.results]

image.png

写onload底部加载时间方法: // 加载状态结束this.loading = false

完整功能实现代码:

image.png 需要关闭 image.png

1.3底部常见报错

1.3.1重复key的问题——list组件初始化时判断关闭

报错信息:网页刚打开,created里面请求和onload里请求同时发送,请求的都是最新数据,onload中,2次一样的数据合并,数据重复了,key值重复

报错原因:van-list组件,组件挂载时,默认就会判定一次是否触底,第一页的数据也是网络请求回来的,标签先挂载了,数据回来更新Dom,所以标签就没有高度,list的load事件上来就触发

image.png 解决方案1:利用list列表组件的immediate-check属性,修改为false 字符串类型的属性不需要绑定

image.png

image.png 解决方案2:onload第一行,写数组长度的判断if(this.list.length===0){return//如果页面没有数据,没有高度,让本次onload逻辑代码不往下执行}

1.3.2底部没有更多判单条件的修改

当页面上滑到最后一页的数据时,会出现报错,因为list列表组件1的finish判断有问题 原代码:

image.png 应该以下一页的时间戳为判断条件

image.png

2.顶部刷新功能的实现

2.1 PullRefresh 下拉刷新

image.png

3.文章列表网络请求的优化合并代码

提取相同的代码封装成函数