亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue2實現數據請求顯示loading圖

發布時間:2020-09-11 19:13:13 來源:腳本之家 閱讀:138 作者:趙海辛 欄目:web開發

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

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

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

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

<style>
 #app{
 width: 100%;
 height: 100%;
 }
</style>

這里的fetchLoading是存在vuex里面的一個變量。在store/modules/common.js里需要如下定義:

/* 此js文件用于存儲公用的vuex狀態 */
import api from './../../fetch/api'
import * as types from './../types.js'
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>
 <div class="loading">
 <img src="./../../assets/main/running.gif" alt="">
 </div>
</template>

<script>
 export default {
 name: 'loading',
 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('FETCH_LOADING', false)
 }, time)
 resolve(response.data)
 })
 .catch((error) => {
 // 關閉 loading圖片消失
 store.dispatch('FETCH_LOADING', false)
 axiosDate = new Date()
 reject(error)
 })
 })
}
export default {
 // 組件中公共頁面請求函數
 commonApi (url, params) {
 if(stringQuery(window.location.href)) {
 store.dispatch('FETCH_LOADING', true);
 }
 axiosDate = new Date();
 return fetch(url, params);
 }
}

這樣就實現了,項目中當加載數據的時候,顯示gif圖片,當數據加載出來時消失。

關于vue.js的學習教程,請大家點擊專題vue.js組件學習教程、Vue.js前端組件學習教程進行學習。

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

磐石市| 濉溪县| 黄浦区| 陆良县| 武安市| 黄龙县| 苍山县| 寻甸| 台中县| 康马县| 鄱阳县| 陵川县| 财经| 昌图县| 正阳县| 叙永县| 多伦县| 韶山市| 潼南县| 班玛县| 荥经县| 庆城县| 盐津县| 苍溪县| 岑巩县| 盈江县| 绵阳市| 宜宾市| 平舆县| 惠安县| 稷山县| 女性| 赤水市| 驻马店市| 迁西县| 开远市| 平阳县| 凤山市| 建宁县| 达尔| 宿松县|