首頁 web前端 js教程 在vue2中如何實作資料請求顯示loading圖

在vue2中如何實作資料請求顯示loading圖

Jun 23, 2018 pm 05:58 PM
loading vue2 資料請求

這篇文章主要為大家詳細介紹了vue2實現數據請求顯示loading圖,具有一定的參考價值,有興趣的小伙伴們可以參考一下

一般項目中,有時候會要求,你在資料請求的時候顯示一張gif圖片,然後資料載入完後,消失。這個,一般只需要在封裝的axios中寫入js事件即可。當然,我們首先需要在app.vue中,加入此圖片。如下:

<template>
 <p id="app">
 <loading v-show="fetchLoading"></loading>
 <router-view></router-view>
 </p>
</template>

<script>
 import { mapGetters } from &#39;vuex&#39;;
 import Loading from &#39;./components/common/loading&#39;;

 export default {
 name: &#39;app&#39;,
 data() {
 return {
 }
 },
 computed: {
 ...mapGetters([
 &#39;fetchLoading&#39;,
 ]),
 },
 components: {
 Loading,
 }
 }
</script>

<style>
 #app{
 width: 100%;
 height: 100%;
 }
</style>
登入後複製

這裡的fetchLoading是存在vuex裡面的變數。在store/modules/common.js裡需要如下定義:

/* 此js文件用于存储公用的vuex状态 */
import api from &#39;./../../fetch/api&#39;
import * as types from &#39;./../types.js&#39;
const state = {
 // 请求数据时加载状态loading
 fetchLoading: false
}
const getters = {
 // 请求数据时加载状态
 fetchLoading: state => state.fetchLoading
}
const actions = {
 // 请求数据时状态loading
 FETCH_LOADING({
 commit
 }, res) {
 commit(types.FETCH_LOADING, res)
 },
}
const mutations = {
 // 请求数据时loading
 [types.FETCH_LOADING] (state, res) {
 state.fetchLoading = res
 }
}
登入後複製

loading元件如下:

<template>
 <p class="loading">
 <img src="./../../assets/main/running.gif" alt="">
 </p>
</template>

<script>
 export default {
 name: &#39;loading&#39;,
 data () {
 return {}
 },
 }
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
 .loading{
 position: fixed;
 top:0;
 left:0;
 z-index:121;
 width: 100%;
 height: 100%;
 background: rgba(0,0,0,0.3);
 display: table-cell;
 vertical-align: middle;
 text-align: center;
 }
 .loading img{
 margin:5rem auto;
 }
</style>
登入後複製

最後在fetch/api.js裡封裝的axios裡寫入判斷loading事件即可:如下

// axios的请求时间
let axiosDate = new Date()
export function fetch (url, params) {
 return new Promise((resolve, reject) => {
 axios.post(url, params)
 .then(response => {
 // 关闭 loading图片消失
 let oDate = new Date()
 let time = oDate.getTime() - axiosDate.getTime()
 if (time < 500) time = 500
 setTimeout(() => {
  store.dispatch(&#39;FETCH_LOADING&#39;, false)
 }, time)
 resolve(response.data)
 })
 .catch((error) => {
 // 关闭 loading图片消失
 store.dispatch(&#39;FETCH_LOADING&#39;, false)
 axiosDate = new Date()
 reject(error)
 })
 })
}
export default {
 // 组件中公共页面请求函数
 commonApi (url, params) {
 if(stringQuery(window.location.href)) {
 store.dispatch(&#39;FETCH_LOADING&#39;, true);
 }
 axiosDate = new Date();
 return fetch(url, params);
 }
}
登入後複製

這樣就實現了,專案中當載入資料的時候,顯示gif圖片,當資料載入出來時消失。

關於vue.js的學習教學課程,請大家點選專題vue.js元件學習教學、Vue.js前端元件學習教學教學。

更多vue學習教學請閱讀專題《vue實戰教學》

上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

使用Angular5實作服務端渲染實戰

在vuex中如何實作閒置狀態進行重設

使用jQuery封裝animate.css(詳細教學)

#vue-cli設定檔(詳細教學)

以上是在vue2中如何實作資料請求顯示loading圖的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Vue中資料請求的選擇:Axios or Fetch? Vue中資料請求的選擇:Axios or Fetch? Jul 17, 2023 pm 06:30 PM

Vue中資料請求的選擇:AxiosorFetch?在Vue開發中,處理資料請求是一個非常常見的任務。而選擇使用哪種工具來進行資料請求,則是需要考慮的問題。在Vue中,最常見的兩種工具是Axios和Fetch。本文將會比較這兩種工具的優缺點,並給出一些範例程式碼來幫助你做出選擇。 Axios是一個基於Promise的HTTP客戶端,可以在瀏覽器和Node.

vue2與vue3中的生命週期執行順序有何不同 vue2與vue3中的生命週期執行順序有何不同 May 16, 2023 pm 09:40 PM

vue2與vue3中生命週期執行順序區別生命週期比較vue2中執行順序beforeCreate=>created=>beforeMount=>mounted=>beforeUpdate=>updated=>beforeDestroy=>destroyedvue3中執行順序setup=>onBefore>beforeDestroy=>destroyedvue3中執行順序setup=>onBefore>beforeDestroy=>destroyedvue3中執行順序setup=>onBefore> onBeforeUpdate=>onUpdated=>onBeforeUnmount=&g

快速搞懂Vue2 diff演算法(圖文詳解) 快速搞懂Vue2 diff演算法(圖文詳解) Mar 17, 2023 pm 08:23 PM

diff演算法是一種透過同層的樹節點進行比較的高效演算法,避免了對樹進行逐層搜尋遍歷。那麼大家對diff演算法嗎有多少了解呢?以下這篇文章就來帶大家深入解析下vue2的diff演算法,希望對大家有幫助!

Vue中如何實現全域loading效果 Vue中如何實現全域loading效果 Jun 11, 2023 am 09:05 AM

在前端開發中,我們經常會有一個場景:使用者在與網頁互動過程中需要等待資料的加載,此時通常會有一個loading效果顯示,提醒使用者等待。在Vue框架中,實作一個全域loading效果並不困難,以下我們來介紹如何實作。第一步:建立Vue插件我們可以建立一個名為loading的Vue插件,可以在所有的Vue實例中引用。在外掛程式中,我們需要實作以下兩個方法:s

聊聊Vue2和Vue3中怎麼設定404介面 聊聊Vue2和Vue3中怎麼設定404介面 Feb 17, 2023 pm 02:25 PM

這篇文章帶大家進行Vue學習,聊聊Vue2和Vue3中設定404介面的方法,希望對大家有幫助!

如何在Vue中實現全域Loading效果 如何在Vue中實現全域Loading效果 Nov 07, 2023 am 09:18 AM

如何在Vue中實現全域Loading效果在Vue開發中,實現全域Loading效果是一個常見的需求。全域Loading效果可以給使用者一個良好的提示,讓使用者知道頁面正在載入中,增加使用者的使用體驗。本文將介紹如何在Vue中實現全域Loading效果,並提供具體的程式碼範例。建立全域Loading元件首先,我們需要建立一個全域Loading元件。這個組件可以是一個簡

Vue框架中常用的資料請求庫:Axios詳解 Vue框架中常用的資料請求庫:Axios詳解 Jul 18, 2023 am 09:12 AM

Vue框架中常用的資料請求庫:Axios詳解標題:Vue框架中常用的資料請求庫:Axios詳解引言:在Vue開發中,資料請求是不可或缺的一部分。而Axios作為Vue中常用的資料請求庫,具有簡單易用的API和強大的功能,成為了前端開發中首選的資料請求工具。本文將詳細介紹Axios的使用方法以及一些常見的應用場景,並提供對應的程式碼範例供讀者參考。 Axios

Vue和Axios聯手,優化前端資料請求的處理流程 Vue和Axios聯手,優化前端資料請求的處理流程 Jul 21, 2023 am 08:09 AM

Vue和Axios聯手,優化前端資料請求的處理流程前端開發中經常需要和後端進行資料交互,資料的請求和處理是前端開發的核心任務之一。 Vue.js是一款流行的前端框架,而Axios是一個基於Promise的HTTP庫,兩者的結合可以大大優化前端資料請求的處理流程。本文將介紹如何使用Vue和Axios聯手,以及範例如下。首先,我們需要在專案中引入Vue和Axios

See all articles