Vant3 中文入门教程 Vant3 PullRefresh 下拉刷新

2024-02-25 开发教程 Vant3 中文入门教程 匿名 12

介绍

用于提供下拉刷新的交互操作。

实例演示

引入

通过以下方式来全局注册组件,更多注册方式请参考组件注册。

import { createApp } from 'vue';
import { PullRefresh } from 'vant';
const app = createApp();
app.use(PullRefresh);

代码演示

基础用法

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

<van-pull-refresh v-model="state.loading" @refresh="onRefresh">
<p>刷新次数: {{ state.count }}</p>
</van-pull-refresh>
import { reactive } from 'vue';
import { Toast } from 'vant';
export default {
setup() {
const state = reactive({
count: 0,
loading: false,
});
const onRefresh = () => {
setTimeout(() => {
Toast('刷新成功');
state.loading = false;
state.count++;
}, 1000);
};
return {
state,
onRefresh,
};
},
};

成功提示

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

<van-pull-refresh
v-model="isLoading"
success-text="刷新成功"
@refresh="onRefresh"
>
<p>刷新次数: {{ count }}</p>
</van-pull-refresh>

自定义提示

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

<van-pull-refresh v-model="isLoading" :head-height="80" @refresh="onRefresh">
<!-- 下拉提示,通过 scale 实现一个缩放效果 -->
<template #pulling="props">
<img
class="doge"
src="https://img.yzcdn.cn/vant/doge.png" rel="external nofollow" rel="external nofollow"
:style="{ transform: `scale(${props.distance / 80})` }"
/>
</template>
<!-- 释放提示 -->
<template #loosing>
<img class="doge" src="https://img.yzcdn.cn/vant/doge.png" rel="external nofollow" rel="external nofollow" />
</template>
<!-- 加载提示 -->
<template #loading>
<img class="doge" src="https://img.yzcdn.cn/vant/doge-fire.jpg" rel="external nofollow" />
</template>
<p>刷新次数: {{ count }}</p>
</van-pull-refresh>
<style>
.doge {
width: 140px;
height: 72px;
margin-top: 8px;
border-radius: 4px;
}
</style>

API

Props

参数说明类型默认值
v-model是否处于加载中状态

boolean

-
pulling-text下拉过程提示文案

string

下拉即可刷新...

loosing-text释放过程提示文案

string

释放即可刷新...

loading-text加载过程提示文案

string

加载中...

success-text刷新成功提示文案

string

-
success-duration刷新成功提示展示时长(ms)

number | string

500

animation-duration动画时长

number | string

300

head-height顶部内容高度

number | string

50

pull-distance v3.0.8

触发下拉刷新的距离

number | string

head-height一致
disabled是否禁用下拉刷新

boolean

false

Events

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

Slots

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

样式变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件。

名称默认值描述
--van-pull-refresh-head-height

50px

-
--van-pull-refresh-head-font-size

var(--van-font-size-md)

-
--van-pull-refresh-head-text-color

var(--van-gray-6)

-
--van-pull-refresh-loading-icon-size

16px

-

常见问题

PullRefresh 的内容未填满屏幕时,只有一部分区域可以下拉?

默认情况下,下拉区域的高度是和内容高度保持一致的,如果需要让下拉区域始终为全屏,可以给 PullRefresh 设置一个与屏幕大小相等的最小高度:

<van-pull-refresh style="min-height: 100vh;" />

PullRefresh 的触发条件是?

PullRefresh 的触发条件是「父级滚动元素的滚动条在顶部位置」。

  • 如果最近一个可滚动的父级元素是 window,则要求 window.pageYOffset === 0。
  • 如果最近一个可滚动的父级元素是 Element,则要求 Element.scrollTop === 0。

在桌面端无法操作组件?

参见桌面端适配。