• <refresh>
    • 简介
    • 子组件
    • 属性
    • 事件
    • Vue 示例
    • Rax 示例

    <refresh>

    简介

    <refresh> 为容器提供下拉刷新功能。

    warning 注意

    • <refresh><scroller><list><waterfall> 的子组件,只能在被它们包含时才能被正确渲染。
    1. <scroller>
    2. <refresh>
    3. <text>Refreshing...</text>
    4. </refresh>
    5. <div v-for="num in lists">
    6. <text>{{num}}</text>
    7. </div>
    8. </scroller>

    子组件

    • 诸如 <text><image> 之类的任何组件,都可以放到 <loading> 进行渲染。
    • 特殊子组件 <loading-indicator>: 只能作为 <refresh><loading> 的子组件使用,拥有默认的动画效果实现。
      1. <refresh>
      2. <text>Refreshing</text>
      3. <loading-indicator></loading-indicator>
      4. </refresh>

    属性

    • display控制 <refresh> 组件显示、隐藏。display 的设置必须成对出现,即设置 display="show",必须有对应的 display="hide"。可选值为 show / hide,默认值为 show

    事件

    • refresh 事件:当 <scroller><list><waterfall> 被下拉完成时触发。
    • pullingdown 事件:当 <scroller><list><waterfall> 被下拉时触发。可以从 event 参数对象中获取以下数据:
      • dy: 前后两次回调滑动距离的差值
      • pullingDistance: 下拉的距离
      • viewHeight: refresh 组件高度
      • type: “pullingdown” 常数字符串
    1. <refresh @refresh="onrefresh" @pullingdown="onpullingdown" :display="refreshing ? 'show' : 'hide'">
    2. <text>Refreshing ...</text>
    3. <loading-indicator></loading-indicator>
    4. </refresh>

    Vue 示例

    基本用法

    Rax 示例

    rax-refreshcontrol<refresh> 组件的上层封装,提供了 Weex 下拉刷新能力

    1. import { createElement, Component, render } from 'rax';
    2. import View from 'rax-view';
    3. import Text from 'rax-text';
    4. import Driver from 'driver-universal';
    5. import RecyclerView from 'rax-recyclerview';
    6. import RefreshControl from 'rax-refreshcontrol';
    7. class RefreshControlDemo extends Component {
    8. state = {
    9. isRefreshing: false,
    10. loaded: 0,
    11. refreshText: '↓ Pull To Refresh'
    12. };
    13. handleRefresh = (e) => {
    14. this.setState({
    15. isRefreshing: true,
    16. refreshText: 'Refreshing',
    17. });
    18. setTimeout(() => {
    19. // update Data
    20. this.setState({
    21. isRefreshing: false,
    22. refreshText: '↓ Pull To Refresh',
    23. });
    24. }, 1000);
    25. };
    26. render() {
    27. return (
    28. <View>
    29. <RecyclerView
    30. refreshControl={null}>
    31. <RefreshControl
    32. refreshing={this.state.isRefreshing}
    33. onRefresh={this.handleRefresh}
    34. >
    35. <Text>{this.state.refreshText}</Text>
    36. </RefreshControl>
    37. <RecyclerView.Cell>
    38. <View>
    39. <Text>this is list</Text>
    40. </View>
    41. </RecyclerView.Cell>
    42. </RecyclerView>
    43. </View>
    44. );
    45. }
    46. }
    47. render(<RefreshControlDemo/>, document.body, { driver: Driver });

    rax-refreshcontrol 文档