# pulldown
# 介绍
pulldown 插件为 BetterScroll 扩展下拉刷新的能力。
# 安装
npm install @better-scroll/pull-down --save
// or
yarn add @better-scroll/pull-down
# 使用
首先引入 pulldown 插件,并通过静态方法 BScroll.use()
初始化插件
import BScroll from '@better-scroll/core'
import PullDown from '@better-scroll/pull-down'
BScroll.use(PullDown)
然后,实例化 BetterScroll 时需要传入 pulldown 配置项。
new BScroll('.bs-wrapper', {
pullDownRefresh: true
})
# 示例
- 基础使用
<template>
<div class="pulldown">
<div
class="pulldown-bswrapper"
ref="bsWrapper"
>
<div class="pulldown-scroller">
<div class="pulldown-wrapper">
<div v-show="beforePullDown">
<span>Pull Down and refresh</span>
</div>
<div v-show="!beforePullDown">
<div v-show="isPullingDown">
<span>Loading...</span>
</div>
<div v-show="!isPullingDown">
<span>Refresh success</span>
</div>
</div>
</div>
<ul class="pulldown-list">
<li
:key="i"
class="pulldown-list-item"
v-for="i of dataList"
>{{ `I am item ${i} ` }}</li>
</ul>
</div>
</div>
</div>
</template>
- 仿新浪微博 2.4.0
为了拉齐客户端的交互效果,在 v2.4.0 版本,pulldown 内部进行了功能的改造并且兼容以前的版本,在一次 pulldown 的操作过程中,内部存在三个流转的状态,并且状态是不可逆的。分别如下:
- default
初始状态。
- moving
移动状态,这个状态代表用户的手指正在操控 BetterScroll,手指未移开,在这种状态下,BetterScroll 会派发两个事件。
enterThreshold
当 BetterScroll 滚动到 pulldown 的 threshold 阈值区域之内的时候派发,在这个事件内部,你可以做文案初始化的逻辑,比如提示用户“下拉刷新”
leaveThreshold
当 BetterScroll 滚动到 pulldown 的 threshold 阈值区域之外的时候派发。你可以提示用户“手指释放刷新”
- fetching
手指移开的瞬间,触发 pullingDown 事件,执行获取数据的逻辑
状态的变换只可能是 default -> moving -> fetching
或者是 default -> moving
,后者代表用户的手指在释放的瞬间,没有满足触发 pullingDown 事件的条件。
# pullDownRefresh 选项对象
# threshold
类型:
number
默认值:
90
配置顶部下拉的距离来决定刷新时机。
# stop
类型:
number
默认值:
40
回弹悬停的距离。BetterScroll 在派发
pullingDown
钩子之后,会立马执行回弹悬停动画。
提示
当 pullDownRefresh 配置为 true 的时候,插件内部使用的是默认的插件选项对象。
const bs = new BScroll('.wrapper', {
pullDownRefresh: true
})
// 相当于
const bs = new BScroll('.wrapper', {
pullDownRefresh: {
threshold: 90,
stop: 40
}
})
# 实例方法
提示
以下方法皆已代理至 BetterScroll 实例,例如:
import BScroll from '@better-scroll/core'
import PullDown from '@better-scroll/pull-down'
BScroll.use(PullDown)
const bs = new BScroll('.bs-wrapper', {
pullDownRefresh: true
})
bs.finishPullDown()
bs.openPullDown({})
bs.autoPullDownRefresh()
# finishPullDown()
- 介绍:结束下拉刷新行为。
注意
每次触发 pullingDown
钩子后,你应该主动调用 finishPullDown()
告诉 BetterScroll 准备好下一次的 pullingDown 钩子。
# openPullDown(config: PullDownRefreshOptions = {})
- 介绍:动态开启下拉刷新功能。
- 参数:
{ PullDownRefreshOptions } config
:修改 pulldown 插件的选项对象PullDownRefreshOptions
:类型如下
export type PullDownRefreshOptions = Partial<PullDownRefreshConfig> | true export interface PullDownRefreshConfig { threshold: number stop: number }
- 返回值:无
注意
openPullDown 方法应该配合 closePullDown 一起使用,因为在 pulldown 插件的生成过程当中,已经自动监测了下拉刷新的动作。
# closePullDown()
- 介绍:动态关闭下拉刷新功能。
# autoPullDownRefresh()
- 介绍:自动执行下拉刷新。
# 事件
# pullingDown
- 参数:无
- 触发时机:当顶部下拉的距离大于
threshold
值时,触发一次pullingDown
钩子。
危险
监测到下拉刷新的动作之后,pullingDown
钩子的消费机会只有一次,因此你需要调用 finishPullDown()
来告诉 BetterScroll 来提供下一次 pullingDown
钩子的消费机会。
# enterThreshold
2.4.0
- 参数:无
- 触发时机:当 pulldown 正处于 moving 状态,并且进入 threshold 区域的瞬间。
# leaveThreshold
2.4.0
- 参数:无
- 触发时机:当 pulldown 正处于 moving 状态,并且离开 threshold 区域的瞬间。
← observe-image pullup →