• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Refresh
2
3 可以进行页面下拉操作并显示刷新动效的容器组件。
4
5>  **说明:**
6>
7>  该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9## 子组件
10
11支持单个子组件。
12
13## 接口
14
15Refresh\(value: \{ refreshing: boolean, offset?:  number | string , friction?: number | string \}\)
16
17**参数:**
18
19| 参数 | 参数名 | 必填 | 参数描述 |
20| -------- | -------- | -------- | -------- |
21| refreshing | boolean | 是 | 当前组件是否正在刷新。<br/>该参数支持[$$](../../quick-start/arkts-restrictions-and-extensions.md#变量的双向绑定)双向绑定变量。 |
22| offset | string&nbsp;\|&nbsp;number | 否 | 下拉起点距离组件顶部的距离。<br/>默认值:16,单位vp <br/>**说明:**<br/>不支持百分比,不支持负数 |
23| friction | number&nbsp;\|&nbsp;string | 否 | 下拉摩擦系数,取值范围为0到100。<br/>默认值:62<br/>-&nbsp;0表示下拉刷新容器不跟随手势下拉而下拉。<br/>-&nbsp;100表示下拉刷新容器紧紧跟随手势下拉而下拉。<br/>-&nbsp;数值越大,下拉刷新容器跟随手势下拉的反应越灵敏。 |
24
25## 属性
26
27支持[通用属性](ts-universal-attributes-size.md)。
28
29## 事件
30
31除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件:
32
33
34| 名称 | 描述 |
35| -------- | -------- |
36| onStateChange(callback: (state: [RefreshStatus](#refreshstatus枚举说明)) => void)| 当前刷新状态变更时,触发回调。<br/>-&nbsp;state:刷新状态。 |
37| onRefreshing(callback: () => void)| 进入刷新状态时触发回调。 |
38
39## RefreshStatus枚举说明
40
41| 名称 | 描述 |
42| -------- | -------- |
43| Inactive | 默认未下拉状态。 |
44| Drag | 下拉中,下拉距离小于刷新距离。 |
45| OverDrag | 下拉中,下拉距离超过刷新距离。 |
46| Refresh | 下拉结束,回弹至刷新距离,进入刷新状态。 |
47| Done | 刷新结束,返回初始状态(顶部)。 |
48
49
50## 示例
51
52```ts
53// xxx.ets
54@Entry
55@Component
56struct RefreshExample {
57  @State isRefreshing: boolean = false
58  @State counter: number = 0
59
60  build() {
61    Column() {
62      Refresh({ refreshing: $$this.isRefreshing, offset: 120, friction: 100 }) {
63        Text('Pull Down and refresh: ' + this.counter)
64          .fontSize(30)
65          .margin(10)
66      }
67      .onStateChange((refreshStatus: RefreshStatus) => {
68        console.info('Refresh onStatueChange state is ' + refreshStatus)
69      })
70      .onRefreshing(() => {
71        setTimeout(() => {
72          this.counter++
73          this.isRefreshing = false
74        }, 1000)
75        console.log('onRefreshing test')
76      })
77    }
78  }
79}
80```
81
82![](figures/refresh.gif)
83