下拉加载更多在移动端和小程序中的不同处理方式

1.在移动端的处理方式:

<template>
<!-- 备注:van-list是引用了vant组件库里面的组件 -->
 <van-list>
     <!-- 订单列表循环渲染问诊订单的数据 -->
     <consult-item v-for="i in list" :key="i" />
 </van-list>
</template>

<script setup lang="ts">
   import { ref } from 'vue'
   import type {  ConsultOrderItem } from "../../../types/consult"
   import { ConsultType } from "../../../enums/index"
   // 引入订单接口
   import { getConsultOrderList } from "../../../api/consult"
    
   // 接收获取订单的类型数据
   const props = defineProps<{
     type:ConsultType
   }>()

  // 1.列表数据
  const list = ref<ConsultOrderItem[]>([])

  // 2.列表加载状态
  const loading = ref(false)

  // 3.列表是否加载完成: true加载完成 | false加载未完成
  const finished = ref(false)

 // 定义变量的参数(请求的分页参数)
 const params = {
  type:props.type,
  current:1,
  pageSize:10
 }

  
// 4.加载数据的方法--->默认页面加载会执行一次
const onLoad = async() => {
  // 异步更新数据
  const res = await getConsultOrderList(params)
  
  // 追加到列表中去
  list.value.push(...res.rows)

  // 加载状态结束
  loading.value = false
   
  // 数据全部加载完成
  if(list.value.length === res.total) {
    finished.value = true
  } else {
    // 数据没有加载完 把页码加一
    params.current++
  }
}
</script>

2.小程序方式的写法

  

wxml部分:

<view class="music-viode" wx:if="videoList">
    <block wx:for="{{ videoList }}" wx:key="id">
       <view>{{ item }}</view>
    </block>
</view>


js部分:
import { getTopMV } from "../../serivers/video" //引入的后端接口
  Page({
   //数据存储
   data: {
    videoList:[],
    offset:0,
    hasMore:true
   },
    
   //调用后台接口
   onLoad: function (options) {
    this.getTopMVList()
   
    },
    
   async getTopMVList() {
    const res = await getTopMV(this.data.offset)
    // 新数据和旧数据进行拼接
    const newVideoList = [ ...this.data.videoList , ...res.data ]
    this.setData({ videoList: newVideoList })
    this.data.offset = this.data.videoList.length
    this.data.hasMore = res.hasMore
   },

  /**
   * 下拉刷新
   */
  async onPullDownRefresh() {
    this.setData({ videoList:[] })
    this.data.offset = 0
    this.data.hasMore = true
    // 重新请求数据
    await this.getTopMVList()
    // 3.停止下拉刷新
    wx.stopPullDownRefresh()
   },

   /**
   *上拉加载更多
   */
  onReachBottom: function () {
    if(!this.data.hasMore) return
    this.getTopMVList()
    }
  })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值