Vue项目中使用vue-infinite-loading插件实现页面数据滚动加载更多-使用案例

本文介绍了如何在Vue.js应用中集成和使用vue-infinite-loading插件,实现页面内容的无限滚动加载。通过在main.js中引入组件,并在具体组件中设置无限滚动的触发事件、距离和状态处理,可以轻松实现数据的分页加载。同时,提供了详细的代码示例,包括模板、样式和脚本部分,展示了如何结合axios获取数据并更新列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装-官网 

npm install vue-infinite-loading -S
or
<script src="https://unpkg.com/vue-infinite-loading@^2/dist/vue-infinite-loading.js"></script>

vue中使用

引入 

//vue中在main.js 引入
// 滚动加载数据
import InfiniteLoading from 'vue-infinite-loading';
Vue.use(InfiniteLoading, { /* options */ });

组件使用

<template>
  <div class="test">
    <p class="list" v-for="(item, index) in list" :key="index">
      {{ item.address }}
      <img :src="item.image" />
    </p>
    <infinite-loading
      spinner="spiral"
      @infinite="infiniteHandler"
      :distance="200"
      class="infinite-loading-wrap"
    >
      <!-- <div slot="spinner">Loading...</div> -->
      <div slot="no-more">No more Data</div>
      <div slot="no-results">No results Data</div>
      <div slot="error" slot-scope="{ trigger }">
        Error Data, click <a href="javascript:;" @click="trigger">here</a> toretry
      </div>
    </infinite-loading>
  </div>
</template>

<style lang="scss" scoped>
.test {
  display: flex;
  flex-wrap: wrap;
}
.list {
  display: flex;
  align-content: center;
  flex-direction: column;
  font-size: 20px;
  img {
    width: 300px;
  }
}
</style>
<script>
import InfiniteLoading from "vue-infinite-loading";
export default {
  components: {
    InfiniteLoading,
  },
  data() {
    return {
      page: 1,
      list: [ //默认数据
        {
          id: 62,
          name: null,
          address: "0xb9b********dC517",
          price: 7080,
          image:
            "http://*********1000023_336_71_30_262626_303030.jpg",
          status: 3,
          chain_id: 62,
          collect_times: 0,
        },
      ],
    };
  },
  computed: {},
  mounted() {
    this.goApi();
  },
  methods: {
    async goApi() {
      const res = await this.$axios.workList({ page: this.page });
      console.log(res, 5888);
      this.list.push(...res.data.list); //追加数据
    },
    async infiniteHandler($state) {
      const res = await this.$axios.workList({ page: this.page, pagesize: 50 });
      if (res.data.list.length) {
        this.page += 1; // 下一页
        this.list = this.list.concat(res.data.list);
        $state.loaded();
      } else {
        $state.complete();
      }
    },
  },
  beforeDestroy() {},
};
</script>

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JackieDYH

谢谢您嘞!我会继续加油地

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值