今天写一个模拟懒加载,为啥不是真的懒加载?因为所有数据是从上个页面传过来的,没请求接口。只是防止数据过多,导致页面渲染过慢的问题。
用到的是小程序的onReachBottom方法,官方链接
data: {
showList:[],//显示在页面上的数据
hideList:[],//未显示在页面的数据
pageSize: 20, // 每页条数
ifPages:true //是否下滑的时候继续添加页面显示的数据
},
onReachBottom(){
let {showList,hideList,pageSize,ifPages} = this.data;
if(ifPages){
let newList = [];
if(hideList.length>pageSize){//如果未显示的数据 大于显示条数 截取添加
newList = showList.concat(hideList.splice(0,pageSize));
}else{ //如果不大于 那就直接全部添加
newList = showList.concat(hideList)
this.setData({
ifPages:false,
hideList:[]
})
}
this.setData({
chooseList:newList,
hideList
})
}
},
onLoad: function (options) {
let data = decodeURIComponent(options.data)
let { hideList } = JSON.parse(data);
let { pageSize } = this.data;
if(hideList.length>pageSize){ //如果数据大于页面显示条数 那就先赋值条数,然后再通过滑动的时候再加数据
this.setData({
showList:hideList.splice(0,pageSize)
})
}else{ //如果数据小于显示条数 直接赋值 且不会再分页
this.setData({
showList:hideList,
ifPages:false
})
}
},