• uniapp上拉加载更多功能的简单实现


    示例

    前提:安装了uniapp的LoadMore插件(一般初始都会安装此插件), https://ext.dcloud.net.cn/plugin?id=29
    
    <template>
          <view class="container">
              <view v-for="(item,index) in videoList" :key="index">...</view>  //渲染的列表处
              <view v-show="isLoadMore">  //loading加载提示处
                    <uni-load-more :status="loadStatus" ></uni-load-more>
              </view>
          </view>
    </template>
    
    <script>
    export default {
        data() {
              return {
                    videoList:[],
    				
                    page:1,
                    pagesize:10,
                    loadStatus:'loading',  //加载样式:more-加载前样式,loading-加载中样式,nomore-没有数据样式
                    isLoadMore:false,  //是否加载中
              };
        },
    
        onLoad() {
              this.getVideoList()
        },
    		
        onReachBottom(){  //上拉触底函数
              if(!this.isLoadMore){  //此处判断,上锁,防止重复请求
                    this.isLoadMore=true
                    this.page+=1
                    this.getVideoList()
              }
        },
    
        methods:{
              getVideoList(){
                    uni.request({
                          url: `${this.$baseUrl}/api-video/getlist?page=${this.page}&pagesize=${this.pagesize}`,
                          method: 'GET',
                          success: res => {
                                if(res.data.code==200){
                                      if(res.data.data.list){
                                            this.videoList=this.videoList.concat(res.data.data.list)
                                            if(res.data.data.list.length<this.pagesize){  //判断接口返回数据量小于请求数据量,则表示此为最后一页
                                                  this.isLoadMore=true                                             
                                                  this.loadStatus='nomore'
                                            }else{
                                                  this.isLoadMore=false
                                            }
                                      }else{
                                            this.isLoadMore=true
                                            this.loadStatus='nomore'
                                      }
                                }else{  //接口请求失败的处理
                                      uni.showToast({title:res.data.msg,icon:'none'})
                                      this.isLoadMore=false
                                      if(this.page>1){
                                            this.page-=1
                                      }
                                }
                          },
                          fail: () => {  //接口请求失败的处理
                                uni.showToast({title: '服务器开小差了呢,请您稍后再试',icon:'none'})
                                this.isLoadMore=false
                                if(this.page>1){
                                      this.page-=1
                                }
                          },
                    });
              },
        }
    </script>
    
  • 相关阅读:
    【Linux】5.5 Shell运算符
    【Linux】5.4 Shell数组
    【Linux】5.3 Shell字符串
    【Linux】5.2 Shell变量
    【Linux】5.1 Shell简介
    【Linux】3.11 包管理工具(RPM和YUM)
    【Linux】3.10 进程管理(重点)
    【Linux】3.9 网络配置
    【Linux】3.8 Linux磁盘分区、挂载
    【Linux】3.7 定时任务调度
  • 原文地址:https://www.cnblogs.com/huihuihero/p/13206958.html
Copyright © 2020-2023  润新知