• 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-two-way-sync.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