Skip to content
鼓励作者:欢迎打赏犒劳

vantH5基础使用

列表分页刷新

  • 上拉分页
  • 下拉刷新
vue
<script setup>
import { ref,onBeforeMount } from 'vue';
import {getListByPageApi} from '@/api/tixian'

// 是否正在刷新
const refreshing = ref(false);
//是否加载完成
const finished = ref(false)
//是否loading
const loading = ref(false);
//当前页
const currentPage = ref(1);
//当前页大小
const pageSize = ref(10);
//总数据
const list = ref([]);

onBeforeMount(() => {

})

//上拉加载列表
function onLoadNextPage() {
  loading.value = true;
  getListByPageApi({
    currentPage: currentPage.value,
    pageSize: pageSize.value}
  ).then(res => {
    refreshing.value = false;
    currentPage.value++
    loading.value = false;
    //拼接数据
    list.value =  [...list.value, ...res.data.rows];
    if (list.value.length >= res.data.total){
      finished.value = true
    }
  })
}

// 下拉刷新
const onRefresh = () => {
  // 重置状态
  finished.value = false;
  loading.value = true;

  // 重置页码并请求数据
  currentPage.value = 1;

  getListByPageApi({
    currentPage: currentPage.value,
    pageSize: pageSize.value}
  ).then(res => {
    refreshing.value = false;
    currentPage.value++
    loading.value = false;
    //拼接数据
    list.value =  res.data.rows;
    if (list.value.length >= res.data.total){
      finished.value = true
    }
  })
}
</script>


<template>
  <!-- 下拉刷新容器 -->
  <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
    <!-- 上拉加载列表 -->
    <van-list
        v-model:loading="loading"
        :finished="finished"
        finished-text="没有更多了"
        @load="onLoadNextPage"
    >
      <div v-for="(item,index) in list" :key="index" class="main">
         
      </div>
    </van-list>
  </van-pull-refresh>
</template>

如有转载或 CV 的请标注本站原文地址