1# refresh 2 3<!--Kit: ArkUI--> 4<!--Subsystem: ArkUI--> 5<!--Owner: @yylong--> 6<!--Designer: @yylong--> 7<!--Tester: @liuzhenshuo--> 8<!--Adviser: @HelloCrease--> 9 10> **说明:** 11> 从API version 4开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 12 13下拉刷新容器。 14 15## 权限列表 16 17无 18 19 20## 子组件 21 22支持。 23 24 25## 属性 26 27除支持[通用属性](js-components-common-attributes.md)外,还支持如下属性: 28 29| 名称 | 类型 | 默认值 | 必填 | 描述 | 30| -------- | -------- | -------- | -------- | -------- | 31| offset | <length> | - | 否 | 刷新组件静止时距离父组件顶部的距离。 | 32| refreshing | boolean | false | 否 | 标识刷新组件当前是否正在刷新。<br/>- true:刷新组件当前处于刷新状态。<br/>- false:刷新组件当前未处于刷新状态。 | 33| type | string | auto | 否 | 设置组件刷新时的动效。两个可选值,不支持动态修改。<br/>- auto: 默认效果,列表界面拉到顶后,列表不移动,下拉后有转圈弹出。<br/>- pulldown: 列表界面拉到顶后,可以继续往下滑动一段距离触发刷新,刷新完成后有回弹效果(如果子组件含有list,防止下拉效果冲突,需将list的scrolleffect设置为no)。 | 34| lasttime | boolean | false | 否 | 设置是否显示上次更新时间,字符串格式为:“上次更新时间:XXXX ”,XXXX 按照时间日期显示规范显示,不可动态修改(建议type为pulldown时使用,固定距离位于内容下拉区域底部,使用时注意offset属性设置,防止出现重叠)。<br/>- true:显示上次更新时间。<br/>- false:不显示上次更新时间。 | 35| timeoffset<sup>6+</sup> | <length> | - | 否 | 设置更新时间距离父组件顶部的距离。 | 36| friction | number | 42 | 否 | 下拉摩擦系数,取值范围:0-100,数值越大refresh组件跟手性高,数值越小refresh跟手性低。 | 37 38 39## 样式 40 41除支持[通用样式](js-components-common-styles.md)外,还支持如下样式: 42 43| 名称 | 类型 | 默认值 | 必填 | 描述 | 44| -------- | -------- | -------- | -------- | -------- | 45| background-color | <color> | white<br/> | 否 | 设置刷新组件的背景颜色。 | 46| progress-color | <color> | black<br/> | 否 | 设置刷新组件的loading图标颜色。 | 47 48 49## 事件 50 51仅支持如下事件: 52 53| 名称 | 参数 | 描述 | 54| -------- | -------- | -------- | 55| refresh | { refreshing: refreshingValue } | 下拉刷新状态变化时触发。可能值:<br/>- false:当前处于下拉刷新过程中。<br/>- true:当前未处于下拉刷新过程中。 | 56| pulldown | { state: string } | 下拉开始和松手时触发。可能值:<br/>- start:表示开始下拉。<br/>- end:表示结束下拉。 | 57 58 59## 方法 60 61不支持[通用方法](js-components-common-methods.md)。 62 63 64## 示例 65 66```html 67<!-- xxx.hml --> 68<div class="container"> 69 <refresh refreshing="{{fresh}}" onrefresh="refresh"> 70 <list class="list" scrolleffect="no"> 71 <list-item class="listitem" for="list"> 72 <div class="content"> 73 <text class="text">{{$item}}</text> 74 </div> 75 </list-item> 76 </list> 77 </refresh> 78</div> 79``` 80 81```css 82/* xxx.css */ 83.container { 84 flex-direction: column; 85 align-items: center; 86 width: 100%; 87 height: 100%; 88} 89 90.list { 91 width: 100%; 92 height: 100%; 93} 94 95.listitem { 96 width: 100%; 97 height: 150px; 98} 99 100.content { 101 width: 100%; 102 height: 100%; 103 flex-direction: column; 104 align-items: center; 105 justify-content: center; 106} 107 108.text { 109 font-size: 35px; 110 font-weight: bold; 111} 112``` 113 114```js 115// xxx.js 116import promptAction from '@ohos.promptAction'; 117export default { 118 data: { 119 list:[], 120 fresh:false 121 }, 122 onInit() { 123 this.list = []; 124 for (var i = 0; i <= 3; i++) { 125 var item = '列表元素' + i; 126 this.list.push(item); 127 } 128 }, 129 refresh: function (e) { 130 promptAction.showToast({ 131 message: '刷新中...' 132 }) 133 var that = this; 134 that.fresh = e.refreshing; 135 setTimeout(function () { 136 that.fresh = false; 137 var addItem = '更新元素'; 138 that.list.unshift(addItem); 139 promptAction.showToast({ 140 message: '刷新完成!' 141 }) 142 }, 2000) 143 } 144} 145``` 146 147 148