加载更多组件

  • 书写时PullUp组件在可加载列表的后面。
  • 通过mode设置加载更多的模式,有点击按钮加载更多,以及滑到最底端自动加载,可选 [auto,button] 2种参数。
  • 通过status设置当前状态,只需要在请求结束返回相应状态,包含请求成功返回2,请求成功并再没有数据返回4,请求失败返回3。
  • 可通过tips设置按钮文字和状态提示语,默认['加载更多','','加载成功','加载失败','没有更多'],分别对应status的状态。
  • 可通过phStyle设置按钮的样式,如果当前mode为auto设置无效。
  • 可通过loadCallback设置点击按钮加载或滑到底部自动加载的回调函数,如果状态为4不执行。
  • 如果当前列表存在自定义的滚动条,需要通过getTarget传递滚动的目标,且滚动元素的子元素必须只有一个。

主要属性和接口:

  • mode:加载更多的模式,默认auto。
  • status:当前状态:0加载更多, 1加载中, 2数据加载成功, 3数据加载失败, 4没有更多。
  • tips:按钮文字和状态提示语,默认['加载更多','','加载成功','加载失败','没有更多']。
  • phStyle:按钮的样式,默认'primary'。
  • loadCallback:点击按钮加载或滑到底部自动加载的回调函数。
  • getTarget: 如果当前列表存在自定义的滚动条,需要传递滚动的目标。

示例:

 <div style={{height:'300px',overflow:'auto'}} ref={(list)=>this.list=list}> // 用到getTarget需要保证只有一个子元素,包裹住滚动的所有内容
     <div> 
         <List>...</List> // 可加载列表的位置
         <PullUp mode='button' status={this.state.status} 
             tips={['点击加载更多','加载中...','加载成功!','加载失败!','没有更多']} 
             phStyle='primary' 
             loadCallback={this.loadCallback.bind(this)}
             getTarget={()=>{return list;}} />
     </div>
 </div>
Extends Component
Module: 操作类组件

Available since 2.0.0

Constructor

PullUp

PullUp ()

Defined in src/pullup/index.js:15

Available since 2.0.0

Example:

import React, { Component } from "react"

import PullUp from "phoenix-ui/lib/pullup"
import List from "phoenix-ui/lib/list"
import PullDown from "phoenix-ui/lib/pulldown"

import Code from "./code/code"
import {ajax} from "./utils/tool.js"

export default class pullup extends Component{
    constructor(props,context){
        super(props,context); 

        this.count = 0;

        this.state = {
            loadingData : [],
            status: 1, // 状态:0"加载更多",1"加载中",2"加载成功",3"加载失败",4"没有更多"
            visible1: false,
        }

        this.loadCallback();
    }

    // 加载更多的执行回调(点击按钮刷新或滑倒屏幕最下方自动刷新)
    loadCallback(){
        this.getData("./data/post"+(this.count?this.count:'')+".json") // 开始请求数据
        this.count++
    }

    getData(fileName){ // 获取数据方法,请求状态status必须准确返回
        ajax(fileName).then((json)=>{// 数据处理
            let data = json.data;
            let loadingData = this.state.loadingData.slice(0);
            for(let i in data){
                loadingData.push(data[i]);
            }

            // 必需
            this.setState({
                loadingData: loadingData,
                status: json.final? 4:2 // 根据final判断是加载成功还是没有更多
            }); 

        }, (error)=>{
            // 加载失败,必需
            this.setState({
                status: 3
            })
        });
    }

    refreshCallback(){
        console.log('refresh!!!')
    }

    render(){
        return(
            <div>
                <h2 className="comp-title">PullUp</h2>
                <h3 className="comp-type">mode(默认auto) 加载的模式(自动加载或按钮)</h3>
                <h3 className="comp-type">status 当前状态(0加载更多, 1加载中, 2数据加载成功, 3数据加载失败, 4没有更多)</h3>
                <h3 className="comp-type">tips 设置按钮文字和状态提示语</h3>
                <h3 className="comp-type">phStyle(默认primary) 按钮的样式</h3>
                <h3 className="comp-type">loadCallback 加载更多的回调函数</h3>
                <h3 className="comp-type">getTarget 如果当前列表存在自定义的滚动条,需要传递滚动的目标</h3>
                <div ref={(list)=>this.list=list}>
                    <PullDown loadCallback={this.refreshCallback.bind(this)}/>
                    <div>
                        <List>
                            <List.Header>加载更多</List.Header>
                            {
                                this.state.loadingData.map((item,index)=>{
                                    return (
                                        <List.Item key={index}>
                                            <List.Col>{item.title}</List.Col>
                                        </List.Item>
                                    )
                                })
                            }
                        </List>
                        <PullUp status={this.state.status} loadCallback={this.loadCallback.bind(this)}/>
                    </div>
                </div>                
            </div>
        );
    }
}

方法

getTarget

getTarget () Object

如果当前列表存在自定义的滚动条,需要传递滚动的目标

Returns:

[Object]

目标元素的ref

loadCallback

loadCallback ()

滑到底部自动加载的回调函数,用户在该函数内自定义请求

属性

classPrefix

String

样式前缀

Default:

'pullup'

mode

String

加载更多的模式,可选[auto,button], 默认auto

Default:

'auto'

phStyle

Array

按钮颜色,默认primary

Default:

'primary'

status

Number

加载状态:0初始状态, 1加载中, 2数据加载成功, 3数据加载失败, 4没有更多

Default:

0

tips

Array

加载5个状态的文字描述,默认['加载更多','','加载成功','加载失败','没有更多']

Default:

['加载更多','加载中','加载成功','加载失败','没有更多']