当前位置:   article > 正文

vue2用vant的van-pull-refresh实现上拉加载、下拉刷新

van-pull-refresh
<van-pull-refresh v-model="refreshing" @refresh="onRefresh">
        <van-list
          v-model="loading"
          :finished="finished"
          finished-text="没有更多了"
          @load="onLoad"
          :distance="150">
          <Empty
            v-if="!list.length" />
          <Table
            v-else
            :data="list"
            :column="column"
            :isShowStatus="false" />
        </van-list>
      </van-pull-refresh>
      
      const pageNum = ref(0)
	const pageSize = ref(15)
	const loading = ref(false)
	const finished = ref(false)
	const refreshing = ref(false)
    const column= ref([])
		column.value = [
		  '11',
		  '22',
		]
   const getPageList = (_pageNum = 0) => {
	  if (_pageNum) {
	    pageNum.value = _pageNum
	  }
	  getData({
	    sss:'all',
	    pageNum: _pageNum || pageNum.value,
	    pageSize: pageSize.value
	  })
    .then(data => {
      if (data.list.length == 0) {
        // 本次没有数据
        if (pageNum.value > 1) {
          // 不是第一页,上拉加载
          finished.value = true // 数据全部加载完毕
        } else {
          //第一页,下拉刷新
          list.value = []
          showFailToast('暂无数据')
          refreshing.value = false
        }
      } else {
        if (pageNum.value > 1) {
          let _preData = list.value
          if (data.list.length) {
            let _data = data.list
            list.value = [..._preData, ..._data]
          } else {
            refreshing.value = false
          }
        } else {
          list.value = data.list
          refreshing.value = false
        }
      }
      // 更新 loading 和 finished 的状态值
      loading.value = false
      // 如果数据全部加载完毕,则将 finished 置为 true
      if (finished.value) {
         showToast('已经没有更多数据了')
      }
    })
    .catch(err => {
      showFailToast(err.msg || '请求失败')
    })
}

	const onRefresh = () => {
		  // 下拉刷新
		  finished.value = false // 每次下拉刷新,要将finished置为false
		  getPageList(1)
		  console.log('下拉刷新222', finished.value, loading.value)
	}

const onLoad = useDebounceFn(() => {
  loading.value = true
  pageNum.value++
  console.log('上拉加载222', finished.value, loading.value)
  getPageList()
}, 200)

onMounted(() => {
  // getInitData()
})
	
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/731004
推荐阅读
相关标签
  

闽ICP备14008679号