PullRefresh 下拉刷新

引入

  1. import Vue from 'vue';
  2. import { PullRefresh } from 'vant';
  3. Vue.use(PullRefresh);

代码演示

基础用法

下拉刷新时会触发 refresh 事件,在事件的回调函数中可以进行同步或异步操作,操作完成后将 v-model 设置为 false,表示加载完成。

  1. <van-pull-refresh v-model="isLoading" @refresh="onRefresh">
  2. <p>刷新次数: {{ count }}</p>
  3. </van-pull-refresh>
  1. import { Toast } from 'vant';
  2. export default {
  3. data() {
  4. return {
  5. count: 0,
  6. isLoading: false
  7. }
  8. },
  9. methods: {
  10. onRefresh() {
  11. setTimeout(() => {
  12. Toast('刷新成功');
  13. this.isLoading = false;
  14. this.count++;
  15. }, 1000);
  16. }
  17. }
  18. }

成功提示

通过success-text可以设置刷新成功后的顶部提示文案

  1. <van-pull-refresh
  2. v-model="isLoading"
  3. success-text="刷新成功"
  4. @refresh="onRefresh"
  5. >
  6. <p>刷新次数: {{ count }}</p>
  7. </van-pull-refresh>

自定义提示

通过插槽可以自定义下拉刷新过程中的提示内容

  1. <van-pull-refresh v-model="isLoading" :head-height="80" @refresh="onRefresh">
  2. <!-- 下拉提示,通过 scale 实现一个缩放效果 -->
  3. <img
  4. class="doge"
  5. slot="pulling"
  6. slot-scope="props"
  7. src="https://img.yzcdn.cn/vant/doge.png"
  8. :style="{ transform: `scale(${props.distance / 80})` }"
  9. >
  10. <!-- 释放提示 -->
  11. <img
  12. class="doge"
  13. slot="loosing"
  14. src="https://img.yzcdn.cn/vant/doge.png"
  15. >
  16. <!-- 加载提示 -->
  17. <img
  18. class="doge"
  19. slot="loading"
  20. src="https://img.yzcdn.cn/vant/doge-fire.jpg"
  21. >
  22. <p>刷新次数: {{ count }}</p>
  23. </van-pull-refresh>
  24. <style>
  25. .doge {
  26. width: 140px;
  27. height: 72px;
  28. margin-top: 8px;
  29. border-radius: 4px;
  30. }
  31. </style>

API

Props

参数说明类型默认值
v-model是否处于加载中状态boolean-
pulling-text下拉过程提示文案string下拉即可刷新…
loosing-text释放过程提示文案string释放即可刷新…
loading-text加载过程提示文案string加载中…
success-text刷新成功提示文案string-
success-duration刷新成功提示展示时长(ms)number500
animation-duration动画时长number300
head-height v2.4.2顶部内容高度number50
disabled是否禁用下拉刷新booleanfalse

Events

事件名说明回调参数
refresh下拉刷新时触发-

Slots

名称说明SlotProps
default自定义内容-
normal非下拉状态时顶部内容-
pulling下拉过程中顶部内容{ distance: 当前下拉距离 }
loosing释放过程中顶部内容{ distance: 当前下拉距离 }
loading加载过程中顶部内容{ distance: 当前下拉距离 }
success刷新成功提示内容-

常见问题

在桌面端无法操作组件?

参见在桌面端使用

PullRefresh 下拉刷新 - 图1