vue-loadmore实现移动端下拉刷新和上拉加载

vuejs-loadmore

下面介绍一款vue移动端下拉刷新和上拉加载组件,体积小运行快,使用起来很简单。
NPM

一个Vue.js 的下拉刷新和上拉加载组件。

预览

在线demo

也可以扫描以下二维码访问演示:

安装 & 使用

安装 npm 包
# npm
npm install vuejs-loadmore --save
全局导入
import Vue from 'vue';
import VueLoadmore from 'vuejs-loadmore';

Vue.use(VueLoadmore);

国际化支持

支持中文 zh-CN 和英文 en-US, 默认为 zh-CN。

import VueLoadmore from 'vuejs-loadmore';

Vue.use(VueLoadmore, {
  lang: 'en-US'
})

你也可以使用 locale.use() 指定语言。

import VueLoadmore, { locale } from 'vuejs-loadmore';

Vue.use(VueLoadmore);
locale.use('en-US');

用法

基础用法

<vue-loadmore 
  :on-refresh="onRefresh" 
  :on-loadmore="onLoad"
  :finished="finished">
  <div v-for="(item, i) of list" :key="i"></div>
</vue-loadmore>

on-refreshon-loadmore 会在下拉刷新或滚动到底部时触发,需要在处理完数据请求后执行回调函数 done()

如果你不需要刷新,只需要不绑定on-refresh

当数据请求完成后,你可以将finished的数据改为true,这样就会显示没有更多了

export default {
  data() {
    return {
      list: [],
      page: 1,
      pageSize: 10,
      finished: false
    };
  },
  mounted() {
    this.fetch();
  },
  methods: {
    onRefresh(done) {
      this.list = [];
      this.page = 1;
      this.finished = false;
      this.fetch();

      done();
    },

    onLoad(done) {
      if (this.page <= 10) {
        this.fetch();
      } else {
        // all data loaded
        this.finished = true;
      }
      done();
    },

    fetch() {
      for (let i = 0; i < this.pageSize; i++) {
        this.list.push(this.list.length + 1);
      }
      this.page++;
    }
  },
}

错误提示

<vue-loadmore 
  :on-loadmore="onLoad"
  :finished="finished"
  :error.sync="error">
  <div v-for="(item, i) of list" :key="i"></div>
</vue-loadmore>
export default {
  data() {
    return {
      list: [],
      finished: false,
      error: false,
    };
  },
  methods: {
    onLoad() {
      fetchSomeThing().catch(() => {
        this.error = true;
      });
    },
  },
};

API

Props

AttributeDescriptionTypeDefault
on-refresh顶部下拉触发function-
pulling-text下拉显示文本string下拉刷新
loosing-text释放显示文本string释放刷新
loading-text正在刷新显示文本string正在刷新
success-text刷新完成显示文本string刷新完成
show-success-text是否显示success-textbooleantrue
pull-distance触发正在刷新状态的距离number | string50
head-height正在刷新显示区域的高度number | string50
animation-duration下拉刷新动画持续时间number | string200
on-loadmore滚动到底部触发function-
immediate-check是否在mounted之后立即检查booleantrue
load-offset当滚动条到底部的距离小于 load-offset 时,会发出 on-loadmorenumber | string50
finished数据是否加载完毕,改变为true,则会显示finished-textbooleanfalse
error数据是否加载错误,on-loadmore只有在点击错误文本时才会触发,需要sync修饰符booleanfalse
loading-text滚动到底部正在加载显示文本string正在加载
finished-text滚动到底部加载完毕的显示文本string没有更多了
error-text加载错误显示文本string请求失败,点击重新加载

方法

使用 ref 获取 List 实例并调用实例方法。

NameDescription
checkScroll检查当前的滚动位置,若已滚动至底部,则会触发 on-loadmore

例子

查看demo以快速了解如何使用此包。

git clone git@github.com:staticdeng/vuejs-loadmore.git
yarn install
yarn example:dev
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,针对您的问题,下面是vant-list实现刷新和上的方法: 1. 安装vant 首先需要在项目中安装vant,可以通过npm或yarn进行安装: npm install vant --save 或者 yarn add vant 2. 引入vant 在需要使用vant的页面中引入vant: import Vue from 'vue'; import Vant from 'vant'; import 'vant/lib/index.css'; Vue.use(Vant); 3. 使用vant-list 在页面中使用vant-list组件,用于展示列表数据: <van-list :finished="finished" @load="onLoad" @refresh="onRefresh"> <!-- 列表项 --> </van-list> 其中,@load和@refresh分别是上和下刷新的事件,finished用于控制是否已完所有数据。 4. 实现刷新 在页面的methods中定义onRefresh方法,用于处理下刷新事件: export default { data() { return { list: [], // 列表数据 page: 1, // 当前页码 pageSize: 10, // 每页数据数量 finished: false // 是否已完所有数据 }; }, methods: { async onRefresh() { this.page = 1; // 下刷新时重置页码 this.list = []; // 清空列表数据 await this.loadData(); // 数据 this.finished = false; // 重置finished状态 }, async loadData() { // 根据当前页码和每页数据数量数据 const data = await api.getList(this.page, this.pageSize); if (data.length > 0) { this.list = this.list.concat(data); // 将数据添到列表中 this.page++; // 页码+1 } else { this.finished = true; // 已完所有数据 } } } }; 5. 实现 在页面的methods中定义onLoad方法,用于处理上事件: export default { data() { return { list: [], // 列表数据 page: 1, // 当前页码 pageSize: 10, // 每页数据数量 finished: false // 是否已完所有数据 }; }, methods: { async onRefresh() { this.page = 1; // 下刷新时重置页码 this.list = []; // 清空列表数据 await this.loadData(); // 数据 this.finished = false; // 重置finished状态 }, async onLoad() { if (this.finished) return; // 如果已完所有数据则直接返回 await this.loadData(); // 数据 }, async loadData() { // 根据当前页码和每页数据数量数据 const data = await api.getList(this.page, this.pageSize); if (data.length > 0) { this.list = this.list.concat(data); // 将数据添到列表中 this.page++; // 页码+1 } else { this.finished = true; // 已完所有数据 } } } }; 通过以上步骤,就可以实现vant-list的下刷新和上功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值