基于 vue+mescroll 超精致下拉刷新和上拉加载组件Vue-Mescroll

今天给大家分享一个超赞的Vue下拉刷新和上拉加载组件VueMescroll。

mescroll 一个集成下拉刷新、上拉加载更多、无限滚动加载的js插件。支持vue和uni-app。完美兼容android、ios、手机和pc端浏览器。

vue-mescroll 基于mescroll.js实现的vue版本,流畅运行于主流移动端和pc端浏览器。

安装

$ npm i mescroll.js -S

使用插件

<template>
  <div>
    <!--mescroll滚动区域的基本结构-->
    <vue-mescroll ref="mescroll" :down="mescrollDown" :up="mescrollUp" @init="mescrollInit">
      <!--内容...-->
    </vue-mescroll>
  </div>
</template>

<script>
// 引入mescroll的vue组件
import VueMescroll from 'mescroll.js/mescroll.vue'

export default {
  components: {
    VueMescroll // 注册mescroll组件
  },
  data () {
    return {
      mescrollDown:{}, //下拉刷新的配置. (如果下拉刷新和上拉加载逻辑是一样的,则mescrollDown可不用写)
      mescrollUp: { // 上拉加载的配置.
        callback: this.upCallback, // 上拉回调
        //以下是一些常用的配置,当然不写也可以的.
        page: {
          num: 0, //当前页 默认0,回调之前会加1; 即callback(page)会从1开始
          size: 10 //每页数据条数,默认10
        },
        htmlNodata: '<p class="upwarp-nodata">-- END --</p>',
        noMoreSize: 5, //如果列表已无数据,可设置列表的总数量要大于5才显示无更多数据;
        toTop: {
          //回到顶部按钮
          src: "./static/mescroll/mescroll-totop.png", //图片路径,默认null,支持网络图
          offset: 1000 //列表滚动1000px才显示回到顶部按钮
        },
        empty: {
          //列表第一页无任何数据时,显示的空提示布局; 需配置warpId才显示
          warpId: "xxid", //父布局的id (1.3.5版本支持传入dom元素)
          icon: "./static/mescroll/mescroll-empty.png", //图标,默认null,支持网络图
          tip: "暂无相关数据~" //提示
        }
      },
      dataList: [] // 列表数据
    }
  },
  methods: {
    // mescroll组件初始化的回调,可获取到mescroll对象
    mescrollInit (mescroll) {
      this.mescroll = mescroll  // 如果this.mescroll对象没有使用到,则mescrollInit可以不用配置
    },
    // 上拉回调 page = {num:1, size:10}; num:当前页 ,默认从1开始; size:每页数据条数,默认10
    upCallback (page, mescroll) {
      // 网络请求
      axios.get('xxxxxx', {params: {num: page.num, size: page.size}}).then((response) => {
        // 请求的列表数据
        let arr = response.data
        // 如果是第一页需手动置空列表
        if (page.num === 1) this.dataList = []
        // 把请求到的数据添加到列表
        this.dataList = this.dataList.concat(arr)
        // 数据渲染成功后,隐藏下拉刷新的状态
        this.$nextTick(() => {
          mescroll.endSuccess(arr.length)
        })
      }).catch((e) => {
        // 联网失败的回调,隐藏下拉刷新和上拉加载的状态;
        mescroll.endErr()
      })
    }
  }
}
</script>

附上文档示例及仓库地址

# 官网
http://www.mescroll.com/

# vue-mescroll演示demo
https://github.com/mescroll/mescroll/tree/master/mescroll.js/vue-demo

# vue-mescroll在线示例
http://www.mescroll.com/preview.html?name=list-products-vue

# github地址
https://github.com/mescroll/mescroll

okay,这次就介绍到这里。如果小伙伴们有更好的Vue下拉刷新组件,欢迎评论区分享交流。

举报
评论 0