用vue-scroller做上拉刷新,下拉加载的模板(简单明了,通用)

1.首先下插件,并在你的vue项目中引人

 

1   npm i vue-scroller -D
2   import VueScroller from 'vue-scroller

 

 

2.Vue.use(VueScroller )(这一步别忘啦)

 

3.在你需要做上拉刷新,下拉加载的地方加上<scroller></scroller>标签(附上我的代码,这个自行替换,一般都是做列表的时候加)

 

1   <scroller :on-refresh="refresh" :on-infinite="infinite" ref="myscroller">
2    <ul>
3     <li v-for="(item,i) in arr"  :key="i">
4     </li>
5    </ul>
6   </scroller>
 
 
4.接下来就是最重要的逻辑代码了
 
    (1)在data里面我定义了4个参数(这里是做上拉刷新下拉加载需要用到的参数)
   
1 data() {
2             return {
3                 noDate:false,//这是一个判断是否加载的开关
4                 arr:[],
5                 page:1,
6                 pageSize:10
7             }
8         }
           
 
   (2)methods里面定义三个方法
 
  
 1  methods:{
 2    // 获取数据
 3     getData(){
 4          var that=this;
 5          axios.get('/api/article/findArticleList',{params:{pageNum:that.page,pageSize:that.pageSize}})
 6      .then(function(data){
 7                          if(data.data.success){
 8           //这一步是判断你当前请求的这一页数据是不是最后一页,如果是最后一页就不能请求了(这个根据后端给的接口判断,只要能判断出就行了,如果是最后一页给that.noDate=true)
 9                                that.noDate=data.data.data.isLastPage;
10                                // 判断是下拉刷新还是上拉加载(这一步也是比较巧妙的,当然也很好理解)
11                                if(that.page==1){
12                                      that.arr=data.data.data.list;
13                              }else{
14                                       that.arr=that.arr.concat(data.data.data.list)
15                               }
16                           }
17                      })
18            },
19         // 下拉刷新
20       refresh(){
21          this.page=1;//重置页数刷新每次页数都是第一页
22          this.noDate=false;//重置数据判断
23          setTimeout(function(){
24              this.getData();
25              this.$refs.myscroller.finishPullToRefresh();//刷新完毕关闭刷新的转圈圈
26          }.bind(this),1700)
27      },
28   // 上拉加载
29    infinite(done){
30        if(this.noDate){
31               this.$refs.myscroller.finishInfinite(true);//这个方法是不让它加载了,显示“没有更多数据”,要不然会一直转圈圈
32       }else{
33            setTimeout(() => {
34                  this.page++;//下拉一次页数+1
35                  this.getData();
36                  done();//进行下一次加载操作
37            }, 1500);
38      }
39    },
40 }

 

5.因为刚开始要有数据,最后在mounted里面调用一下this.getData();就ok了!!!
 
 

转载于:https://www.cnblogs.com/liyue666/p/9887911.html

vue-virtual-scroller是一个用于Vue.js的虚拟滚动组件,它可以实现高性能的长列表渲染。下面是使用vue-virtual-scroller实现下拉加载的步骤: 1. 首先,安装vue-virtual-scroller依赖: ```shell npm install vue-virtual-scroller -d ``` 2. 在你的Vue组件中引入vue-virtual-scroller: ```javascript import { RecycleScroller } from 'vue-virtual-scroller'; import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'; export default { components: { RecycleScroller }, // ... } ``` 3. 在模板中使用vue-virtual-scroller组件,并设置相应的属性和事件: ```html <template> <div class="wrapper"> <recycle-scroller :items="items" :item-size="50" :min-item-size="50" :max-item-size="50" :buffer="10" :page-mode="true" @load="loadMore" > <template slot-scope="props"> <!-- 渲染每个列表项的内容 --> <div class="item">{{ props.item }}</div> </template> </recycle-scroller> </div> </template> ``` 4. 在Vue组件的data中定义items数组,并在created钩子函数中初始化items: ```javascript export default { data() { return { items: [] }; }, created() { this.initItems(); }, methods: { initItems() { // 初始化items数组,可以从后端获取数据并赋值给items // 示例:假设从后端获取了10条数据 this.items = Array.from({ length: 10 }, (_, index) => `Item ${index + 1}`); }, loadMore() { // 加载更多数据的逻辑 // 示例:假设每次加载5条数据 const startIndex = this.items.length; const endIndex = startIndex + 5; const newItems = Array.from({ length: 5 }, (_, index) => `Item ${index + startIndex + 1}`); this.items = [...this.items, ...newItems]; } } } ``` 5. 根据你的需求,可以自定义样式来美化滚动区域。 以上是使用vue-virtual-scroller实现下拉加载的基本步骤。你可以根据自己的具体需求进行进一步的定制和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值