评论

祝大家端午安康!基于小程序原生组件scroll-view的上拉加载下拉刷新

基于小程序原生组件scroll-view的上拉加载下拉刷新

Scroll 上拉加载下拉刷新

已更新2.0版本

地址:https://developers.weixin.qq.com/community/develop/article/doc/000a00925744f06af6ca00a7651c13

注意

由于基于scroll-view的下拉刷新实现的 所有 基础库版本需要2.10.1以上否则下拉刷新不好使

在线征集

在线征集下拉刷新动画创意,你可以发草图,或者psd,AE等文件到邮箱:1003418012@qq.com. 只要想法合理立马安排demo~

前言

基于小程序原生组件scroll-view的扩展与封装,实现简单的上拉加载下拉刷新
扩展下拉刷新动画,有灵感的朋友可以丰富更多下拉动画
想增加canvas动画发现下拉时候卡的一b,不知如何处理~

引入

app.jsonindex.json中引入组件

"usingComponents": {
  "coolui-scroll": "./dist/scroll/index"
}

示例

基础用法

升级用法

天猫动画背景

京东下拉

弹射火箭

端午安康

基础用法代码演示

基础用法页面结构

<coolui-scroll
  page="{{scroll.page}}"
  totalPage="{{scroll.totalPage}}"
  bindupper="upper"
  bindlower="lower"
  isEmpty="{{list.length}}"
  height="{{scroll.height}}"
>
  <view class="list-inner" slot="inner">
    
    <view class="item" wx:for="{{tmList}}" wx:key="unique">
      第{{index + 1}}条内容
    </view>
    
  </view>
</coolui-scroll>

基础用法配置

// 配置
scroll: {
  page: 1,
  totalPage: 10,
  emptyImg: 'http://coolui.coolwl.cn/assets/mescroll-empty.png'
},

数据加载

// 模拟数据
let listData = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// 加载数据
onShow: function () {
    // 页面加载时执行一次加载
    this.getData('refresh', 1)
},
getData: function (type, page) {
  let that = this
  let list = that.data.list;
  if (type == 'refresh') {
    let scroll = that.data.scroll
    scroll.page = page
    setTimeout(() => {
      that.setData({
        list: listData,
        scroll: scroll
      });
    }, 300);
  } else {
    let scroll = that.data.scroll
    scroll.page = page
    setTimeout(() => {
      if (that.data.scroll.page <= that.data.scroll.totalPage) {
        that.setData({
          list: list.concat(listData),
          scroll: scroll
        });
      }
    }, 1000);
  }
},

下拉刷新方法

// 下拉刷新
refresh: function () {
  this.getData('refresh', 1)
},

上拉加载方法

// 上拉加载
loadMore: function () {
  this.getData('loadMore', this.data.scroll.page + 1)
},

设置下拉刷新样式

<coolui-scroll refreshStyle="black" refreshBackground="#f2f2f2" ></coolui-scroll>

自定义下拉刷新

开启自定义

<coolui-scroll type="diy" ></coolui-scroll>

设置下拉高度

<coolui-scroll type="diy" refreshthreshold="{{90}}" ></coolui-scroll>

设置下拉刷新背景图片(可设置动图)

<coolui-scroll type="diy" refreshBackgroundImage="http://coolui.coolwl.cn/assets/tm_mui_bike.gif" ></coolui-scroll>

可设置下拉刷新文字颜色

<coolui-scroll type="diy" refreshColor"#fff"></coolui-scroll>

可取消下拉加载文字只显示图片

<coolui-scroll type="diy" refreshBackgroundImage="http://coolui.coolwl.cn/assets/tm_mui_bike.gif" refreshTitleShow="{{false}}"></coolui-scroll>

可自定义下拉刷新结构

<coolui-scroll type="diy" refreshDiy="{{true}}">
  <view class="refresh" slot="refresh">
    下拉加载
  </view>
</coolui-scroll>

API

Props

参数 说明 类型 默认值 版本
page 页码 Number 1 -
totalPage 总页码数 Number 1 -
isEmpty 数据是否为空,传入列表的长度:list.length Number 0 -
emptyImg 数据是否为空时显示的图片 string -
scrollHeight 滚动列表高度,默认为 100%,随外层结构高度变化 string 100% -
type 是否开启自定义开启则设置diy string default -
refreshDiy 是否开启深度自定义,自定义下拉结构及动画,需开启自定义,使用插槽自定义 boolean false -
refreshStyle 设置默认下拉刷新的原点颜色 string #f2f2f2 -
refreshBackground 设置默认下拉刷新的背景颜色,支持black | white string black -
refreshthreshold 设置下拉刷新高度 Number 45 -
refreshBackgroundImage 设置自定义下拉刷新的背景图片图片路径,开启自定义才设置有效 string -
refreshTitleShow 设置是否显示自定义下拉刷新的文字,开启自定义才设置有效 boolean true -
refreshColor 设置自定义下拉刷新的文字颜色,开启自定义才设置有效 string #999999 -

Slots

名称 说明
inner 加载列表内容区域
refresh 下拉自定义结构

Events

事件名 说明 参数
bind:refresh 下拉刷新成功时触发 -
bind:loadMore 上拉加载成功时触发 -
bind:refreshPulling 下拉时触发 event.detail.p: 下拉进度 从0开始到1, 可根据p实现一些动画效果

干货

github地址.

最后一次编辑于  2020-08-16  
点赞 23
收藏
评论

18 个评论

  • 王Jason杰森
    王Jason杰森
    2020-06-29

    大佬,这是什么情况?是内容高度问题吗?

    2020-06-29
    赞同
    回复 1
    • 王Jason杰森
      王Jason杰森
      2020-06-30
      找到原因了。。。wxss下没有加height。。。
      2020-06-30
      回复
  • 神明👼
    神明👼
    2020-06-29

    谁能告诉我 这个an-demo是什么意思

    2020-06-29
    赞同
    回复 1
    • angel
      angel
      2020-06-30
      an-demo 是我测试时候加的样式 重点是里面的coolui-scroll 外面结构你可以自己定
      2020-06-30
      回复
  • 神明👼
    神明👼
    2020-06-29

    这是为啥啊,大佬求教!哭唧唧~

    2020-06-29
    赞同
    回复 1
    • 神明👼
      神明👼
      2020-06-29
      路径没错啊
      2020-06-29
      回复
  • 初
    2020-06-20

    急急 用到您封装的这个组件了 感觉非常好使,倒是遇见了一个问题: 就是 loadMore 都能触发一直在加载 是哪块用的时候需要注意下吗? refresch 是能正常触发的

    2020-06-20
    赞同
    回复 13
    • angel
      angel
      2020-06-20
      要设置totalPage 就是一共多少页 当totalPage = 当前page的时候就不显示加载中了  显示 没有更多了就
      2020-06-20
      回复
    • 初
      2020-06-20
      上拉刷新的方法refresch是可以触发
      2020-06-20
      回复
    • 初
      2020-06-20
      我就把你的dist文件复制来了,然后再app.json配置了下 就直接用组件了 ,需要下载什么包之类的吗
      2020-06-20
      回复
    • angel
      angel
      2020-06-20
      当只有一页或者不足一页的时候 应该不显示啊
      2020-06-20
      回复
    • angel
      angel
      2020-06-20
      2020-06-20
      回复
    查看更多(8)
  • 。。。
    。。。
    2020-06-11

    你好。我在使用过程中,当只有一条数据,那个“加载图标和加载更多”就显示在那条数据下面了,基础库版本修改不了,是1.0.0的,不知道 有影响没,求解答

    2020-06-11
    赞同
    回复 1
    • angel
      angel
      2020-06-12
      最近忙没有及时修改 刚提交了一下 把你说的问题修改了 github上是最新的
      2020-06-12
      回复
  • 与QQ同名
    与QQ同名
    2020-06-01

    大佬,在不,为啥我用的时候只能触发加载更多,不能触发刷新了

    2020-06-01
    赞同
    回复 4
    • angel
      angel
      2020-06-02
      看下你的基础库版本 2.10.1以上
      2020-06-02
      回复
    • 与QQ同名
      与QQ同名
      2020-06-02回复angel
      基础库是2.11.1
      2020-06-02
      回复
    • angel
      angel
      2020-06-02
      有代码片段么 我这边没法复现
      2020-06-02
      回复
    • 与QQ同名
      与QQ同名
      2020-06-02回复angel
      可以了,我只要注释了
      2020-06-02
      回复
  • ( ̄_ ̄ )
    ( ̄_ ̄ )
    2020-05-23

    求救,为什么下拉刷新如下图一样固定不变,文件都引入了的啊😭

    片段:https://developers.weixin.qq.com/s/vNqQ4ymX7Fh5

    2020-05-23
    赞同
    回复 2
    • angel
      angel
      2020-05-25
      你的小程序核心版本选的2.9不支持新版 scroll-view的api 切换一下版本
      2020-05-25
      1
      回复
    • ( ̄_ ̄ )
      ( ̄_ ̄ )
      2020-05-25回复angel
      好的,谢谢解答
      2020-05-25
      回复
  • Admin ²º²⁴
    Admin ²º²⁴
    2020-05-04

    module "dist/common/component" is not defined

    File not found: ../../dist/common/index.wxss

    2020-05-04
    赞同
    回复 1
    • angel
      angel
      2020-05-04
      没注意到少上传东西了- -
      2020-05-04
      回复

正在加载...

登录 后发表内容