返回顶部
首页 > 问答 > 前端开发 > VUE > 如何使用Vue.js实现懒加载和预加载?
0
待解决

如何使用Vue.js实现懒加载和预加载?

  • 匿名发布
  • 2023-11-15
  • 发布在 问答/VUE
995

其他回答1

指尖阻挡流年

2023-11-15

Vue.js可以通过vue-lazyload和vue-infinite-loading插件实现懒加载和预加载。下面是演示代码:

1.使用vue-lazyload实现懒加载:

安装依赖:

npm install vue-lazyload --save

在main.js中引入并注册:

import Vue from "vue"
import VueLazyload from "vue-lazyload"
Vue.use(VueLazyload)

在需要懒加载的组件中使用:

<template>
  <div>
    <img v-lazy="imgUrl">
  </div>
</template>

<script>
export default {
  data() {
    return {
      imgUrl: "需要懒加载的图片地址"
    }
  }
}
</script>

2.使用vue-infinite-loading实现预加载:

安装依赖:

npm install vue-infinite-loading --save

在需要预加载的组件中使用:

<template>
  <div>
    <ul>
      <li v-for="(item, index) in list" :key="index">{{ item }}</li>
    </ul>
    <infinite-loading @infinite="infiniteHandler"></infinite-loading>
  </div>
</template>

<script>
import InfiniteLoading from "vue-infinite-loading"

export default {
  components: {
    InfiniteLoading
  },
  data() {
    return {
      list: [], // 列表数据
      page: 1 // 当前页数
    }
  },
  methods: {
    // 加载下一页数据
    infiniteHandler($state) {
      // 发送异步请求获取数据
      axios.get("/api/data", {
        params: {
          page: this.page
        }
      })
      .then(res => {
        this.list.push(...res.data.list)
        this.page++
        $state.loaded() // 加载完成
        if (!res.data.hasNext) {
          $state.complete() // 数据全部加载完成
        }
      })
      .catch(() => {
        $state.error() // 加载出错
      })
    }
  }
}
</script>
相关问题
相关文章
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作