1. 程式人生 > 其它 >vue 動畫 抖動效果_Vue無限載入vueinfiniteloading

vue 動畫 抖動效果_Vue無限載入vueinfiniteloading

技術標籤:vue 動畫 抖動效果

Vue無限載入vue-infinite-loading

在改造網站的時候,覺得分頁展示文章不是很友好 感覺很蠢,其實早都想替換了,一開始嘗試使用iview 提供的Scroll 無限滾動 真的是無力吐槽 難用的很,載入時間必須長,否則頁面狂抖動。。。昨晚做計劃模組的時候 無意間發現了一個 vue-infinite-loading 感覺蠻好用的 在此記錄一下

前提

vue-infinite-loading2.0只能在Vue.js2.0中使用。如果你想在Vue.js1.0中使用,請安裝vue-infinite-loading1.3版本

1.安裝

安裝很簡單 只需要 npm install 一下即可

npm install vue-infinite-loading --save

2.引入vue-infinite-loading

直接在需要 滾動載入的元件 vue 中 import 進去

import InfiniteLoading from "vue-infinite-loading" components: {  InfiniteLoading //元件  },

3.編寫模板

直接跟在可以滾動的 div 等後面 當頁面到 distance處 臨界值,距離底部多少距離時觸發函式 infiniteHandler

<template>  <div>    <div v-for="(item, $index) in list" :key="$index">      <div>{{item}}div>    div>    <infinite-loading :distance="distance" @infinite="infiniteHandler">      <div slot="spinner">小弟拼命載入中...div>//載入中的文字  也可以直接使用spinner 配置不同的載入動畫,這裡是自定義 顯示文字      <div slot="no-more">已載入完畢!div>//載入完畢的文字      <div slot="no-results">暫無資料:(div>//沒有資料的文字    infinite-loading>  div>template>

4 觸發載入函式

以下是 網上簡單的教程 可以直接配合上面使用

<script>  import InfiniteLoading from 'vue-infinite-loading';  export default {    mounted() {     },    components: {      InfiniteLoading,//直接在元件中宣告     },    methods: {      infiniteHandler($state) {        console.log("觸發")        setTimeout(() => {             const temp = [];           if(this.list.length>80){            $state.complete(); //當沒有資料的時候 呼叫 complete            return;           }            for (let i = this.list.length + 1; i <= this.list.length + 10; i++) {                temp.push(i);              }             this.list = this.list.concat(temp);             $state.loaded();            }, 1000);       },     },    data() {      return {        distance:100,//臨界值,距離底部多少距離時觸發函式  infiniteHandler        list: [1,2,3,4,5,6,7,8,9,0],//測試資料       }     }   }</script>

5.vue-infinite-loading 屬性以及事件

5.1 屬性

on-infinite

這是一個回撥函式,當滾動到距離滾動父元素底部特定距離的時候,會被呼叫。通常,在資料載入完成後,你應該在這個函式中傳送

distance

這是滾動的臨界值。如果到滾動父元素的底部距離小於這個值,那麼on-infinite回撥函式就會被呼叫。

spinner

通過這個屬性,你可以選擇一個你最喜愛旋轉器作為載入動畫

  • bubbles //我使用的是這個

  • circles

  • default

  • spiral

  • waveDots

5.2 Event 事件

$InfiniteLoading:loaded

通常,你需要在資料載入後傳送這個事件,InfiniteLoading元件將隱藏載入動畫,並且準備下一次觸發。

InfiniteLoading:complete

當你傳送這個事件的時候,它會為使用者顯示一個沒有更多內容的提示。你可以利用 solt 來自定義需要顯示的內容。

6.正式使用

注意 沒有資料的時候 需要呼叫 complete 方法

  //滾動 出發事件  infiniteHandler($state) {   console.log("觸發");   setTimeout(() => {    this.page.pageNumber = this.page.pageNumber + 1;    postRequest("blogs/planExecuteRecord/page", this.page).then((res) => {     let plandetailList = res.data.data.content;     if (plandetailList != null && plandetailList.length > 0) {      this.plandetailList = this.plandetailList.concat(plandetailList);      $state.loaded();      } else {      $state.complete();      return;      }     });    }, 600);   },
 <infinite-loading   :distance="distance"    @infinite="infiniteHandler"    spinner="bubbles"  >      <div slot="no-more">暫無資料:(div> infinite-loading>

aada079b478fe809bee6a20a0097f9e5.png

b3d54d766900ef3761c7dbfcad83ed2f.png

總結

本篇主要 介紹了 vue-infinite-loading 無限載入外掛的使用,如何安裝 如何引入 以及一下模板 和 屬性 事件的介紹,最後提供了我正式使用的方式 以及效果圖。。