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

Posted JackieDYH

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue项目中使用vue-infinite-loading插件实现页面数据滚动加载更多-使用案例相关的知识,希望对你有一定的参考价值。

安装-官网 

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>

以上是关于Vue项目中使用vue-infinite-loading插件实现页面数据滚动加载更多-使用案例的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Nuxt.js (Vue.js) 中使用 vue-infinite-loading

vue2.0无限滚动加载数据插件

vue-infinite-loading的下拉加载更多等多个场景的使用

vue的爬坑之路之----基于vue-cli 无限滚动插件无限加载

vue-element(四) el-table滚动加载

vue数据加载分页功能