项目作者: javaLuo

项目描述 :
React 基于IScroll 5 的 下拉刷新上拉加载组件
高级语言: JavaScript
项目地址: git://github.com/javaLuo/iscroll-luo.git
创建时间: 2017-05-21T12:49:39Z
项目社区:https://github.com/javaLuo/iscroll-luo

开源协议:Apache License 2.0

关键词:
iscroll-luo pull-down-refresh pull-up-loadmore react

下载


iscroll-luo

npm
npm


React组件

下拉刷新上拉加载更多、PC端移动端支持

  • 依赖 iscroll5
  • 支持IE11以上,因为IE10不支持Object.assign

img


1. 安装

  1. npm install --save iscroll
  2. npm install --save iscroll-luo

2. 完整例子

  1. import React from 'react';
  2. import Luo from 'iscroll-luo';
  3. class Test extends React.Component {
  4. constructor(props) {
  5. super(props);
  6. this.state = {
  7. data: [1, 2, 3]
  8. };
  9. }
  10. /** 下拉刷新 **/
  11. onDown() {
  12. this.setState({
  13. data: [1, 2, 3]
  14. });
  15. /** 注意此处,就算没有数据或接口调用失败等情况,也要刷一下原始数据,Luo内部才知道状态更新了 **/
  16. }
  17. /** 上拉加载更多 **/
  18. onUp() {
  19. this.setState({
  20. data: [...this.state.data, 4, 5, 6]
  21. });
  22. /** 注意此处,就算没有更多数据了或接口调用失败等情况,也要刷一下原始数据,Luo内部才知道状态更新了 **/
  23. }
  24. render() {
  25. return (
  26. {/** 务必用一个具有高度的容器包裹iscroll-luo组件 **/}
  27. <div style={{ position: 'relative', height: '100vh' }}>
  28. <Luo
  29. id='id'
  30. onDown={() => this.onDown()}
  31. onUp={() => this.onUp()}
  32. >
  33. {
  34. this.state.data.map((v, i) => <div key={i}>{v}</div>)
  35. }
  36. </Luo>
  37. </div>
  38. );
  39. }
  40. }

3. 参数

  1. id # 必填 string 一个唯一的ID (在一个页面有多个Luo控件时比较重要)
  2. onDown # 可选 func 触发下拉刷新时的回调函数
  3. onUp # 可选 func 触发上拉加载时的回调函数
  4. noDown # 可选 bool 是否关闭下拉刷新 默认false
  5. noUp # 可选 bool 是否关闭上拉加载 默认false
  6. noDownStr # 可选 string 关闭下拉刷新后,下拉区域显示的文字 默认无
  7. noUpStr # 可选 string 关闭上拉加载后,上拉区域显示的文字 默认无
  8. className # 可选 string 额外的class,会添加到iscroll-luo组件的包裹元素上
  9. detectionHeight # 可选 bool 是否自动检测容器高度变化 默认false
  10. iscrollOptions: { # 可选 object iscroll的原生参数,初始化时会作为iscroll的options
  11. probeType: 3, # 不要动此参数,必须设为3
  12. preventDefault: true, # 默认禁止浏览器默认事件
  13. click: true, # 默认开启了原生点击事件
  14. }
  15. options: { # 可选 object 自定义参数
  16. backgroundColor: '#f5f5f5', # 背景颜色,是滑动底层的背景颜色
  17. fontColor: '#888888', # 文字颜色,是下拉刷新、上拉加载那些文字的颜色
  18. beyondHeight: 30, # 超过此长度后触发下拉或上拉,单位px
  19. pulldownInfo: '下拉刷新', # 下拉刷新的文字
  20. pulldownReadyInfo: '松开刷新', # 触发下拉刷新的文字
  21. pulldowningInfo: '刷新中…', # 正在刷新中的文字
  22. pullupInfo: '加载更多', # 上拉加载的文字
  23. pullupReadyInfo: '松开加载', # 触发上拉加载的文字
  24. pullupingInfo: '加载中…', # 正在加载中的文字
  25. }

4. 在PC端使用

请把preventDefault设置为false:

  1. <Luo
  2. iscrollOptions={{
  3. preventDefault: false
  4. }}
  5. >...</Luo>

5. 特性

  • 传入iscroll-luo中的数据改变时,即this.props.children改变时,
    iscroll-luo认为已经成功刷新或成功加载更多了,iscroll-luo会刷新内部状态
  • 参数detectionHeight,设为true后,iscroll-luo会不停的检测容器的高度是否变化,
    如果变化了,则自动调用iscroll的refresh()方法
    一般不需要开这个,除非有手动改变高度的需求。window的大小改变、手机的横屏竖屏切换,会自动刷新
  • this.props.children、this.props.noDown(关闭下拉)、this.props.noUp(关闭上拉) 这几个属性的值被改变时,都会刷新Luo内部的状态

6. 演示案例

https://isluo.com/work/iscroll-luo/index.html

7. 更新日志

  • 1.2.3 用React16.4重新编译,去掉了旧的生命周期函数。请使用React16.0以上的版本。

8. 参考

iscroll Github: https://github.com/cubiq/iscroll

iscroll中文API文档: http://www.cnblogs.com/leolai/articles/4204345.html