当前位置:   article > 正文

uniapp上拉加载更多与下拉刷新

uniapp上拉加载更多

前提问题
当页面加载数据过多时,等全部数据加载渲染完会很慢,小程序中未设置分页样式
选用了上拉加载更多的方式,一页一页的去继续加载数据
当想重新加载此页数据时,可以添加下拉刷新功能,下拉后会重新刷新此页数据
解决过程
1.上拉加载更多的主要是设置每页条数,和初始页码,默认初始加载1页,每页10条,每上拉一次会把页码加1,带着当前页码请求该页码的数据,将请求回来的新数据拼接到原本的老数据中
2.下拉刷新是利用uniapp自带API,下拉时触发此页加载方法
解决结果

上拉加载更多

页面代码

  1. <view class="content">
  2.     内容
  3. </view>    
  4.  <view v-if="state.isLoadMore">  
  5.     <uni-load-more :status="state.loadStatus" ></uni-load-more>
  6. </view>

js代码

  1. import {onReachBottom,onPullDownRefresh,onShow} from '@dcloudio/uni-app'
  2. const state = reactive({
  3.     filtrate: {//请求参数
  4.         size: 10, // 条数
  5.         num: 1, // 页数
  6.     },
  7.     loadStatus:'loading',  //加载样式:more-加载前样式,loading-加载中样式,nomore-没有数据样式
  8.     isLoadMore:false,  //是否加载中
  9.     taskList[],//数据
  10. })
  11. //进页面获取数据
  12.  onMounted(() => {
  13.     getTaskList()
  14.  })
  15. // 获取数据
  16.  const getList = ()=>{
  17.      console.log('请求')
  18.      getProcessTask(state.filtrate).then(res=>{
  19.          if(res.records.length!==0){
  20.              //首次加载10条数据,后进行拼接
  21.              state.taskList = state.taskList.concat(res.records)
  22.              //判断接口返回数据量小于请求数据量,则表示此为最后一页
  23.              if(res.records.length<state.filtrate.size){ 
  24.                  state.isLoadMore=true
  25.                  state.loadStatus='nomore'
  26.              }else{
  27.                  state.isLoadMore=false
  28.              }
  29.          }else{
  30.             state.isLoadMore=true
  31.             state.loadStatus='nomore'
  32.          }
  33.      }).catch(err => {})
  34.  }
  35. //上拉触底函数        
  36. onReachBottom(()=>{
  37.   if(!state.isLoadMore){  //此处进行判断上锁,防止重复请求
  38.         state.isLoadMore=true
  39.         state.filtrate.num+=1//页数加1
  40.         getList()
  41.   }
  42. })

下拉刷新
page.json

找到需要加下拉刷新的页面添加"enablePullDownRefresh":true属性

  1. "pages": [ 
  2.         {
  3.             "path": "pages/tab/task/task",
  4.             "style": {
  5.                 "navigationBarTitleText": "任务",
  6.                 "navigationStyle": "custom",
  7.                 "enablePullDownRefresh":true
  8.             }
  9.         }
  10.     ],

页面js中

  1. onPullDownRefresh(() => {
  2.   //重新触发获取数据方法,刷新接口
  3.   state.taskList=[]
  4.   state.filtrate.num = 1
  5.   getList()
  6.   //结束刷新
  7.   uni.stopPullDownRefresh()
  8. })

附加:数据深拷贝

  1. //数据
  2. const state = reactive({
  3.     filtrate: {
  4.         id: '',
  5.         name: '',
  6.         uName: '',
  7.         statusList:'',
  8.         size: 10, // 条数
  9.         num: 1, // 页数
  10.     }
  11. })
  12. //使用JSON
  13. let param = JSON.parse(JSON.stringify(state.filtrate))

删除对象的指定属性

delete (state.filtrate.num);

Ending~
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/221402
推荐阅读
相关标签
  

闽ICP备14008679号