<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        vue2實現(xiàn)數(shù)據(jù)請求顯示loading圖

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:24:57
        文檔

        vue2實現(xiàn)數(shù)據(jù)請求顯示loading圖

        vue2實現(xiàn)數(shù)據(jù)請求顯示loading圖:一般項目中,有時候會要求,你在數(shù)據(jù)請求的時候顯示一張gif圖片,然后數(shù)據(jù)加載完后,消失。這個,一般只需要在封裝的axios中寫入js事件即可。當(dāng)然,我們首先需要在app.vue中,加入此圖片。如下: <template> <div id=app>
        推薦度:
        導(dǎo)讀vue2實現(xiàn)數(shù)據(jù)請求顯示loading圖:一般項目中,有時候會要求,你在數(shù)據(jù)請求的時候顯示一張gif圖片,然后數(shù)據(jù)加載完后,消失。這個,一般只需要在封裝的axios中寫入js事件即可。當(dāng)然,我們首先需要在app.vue中,加入此圖片。如下: <template> <div id=app>

        一般項目中,有時候會要求,你在數(shù)據(jù)請求的時候顯示一張gif圖片,然后數(shù)據(jù)加載完后,消失。這個,一般只需要在封裝的axios中寫入js事件即可。當(dāng)然,我們首先需要在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狀態(tài) */
        import api from './../../fetch/api'
        import * as types from './../types.js'
        const state = {
         // 請求數(shù)據(jù)時加載狀態(tài)loading
         fetchLoading: false
        }
        const getters = {
         // 請求數(shù)據(jù)時加載狀態(tài)
         fetchLoading: state => state.fetchLoading
        }
        const actions = {
         // 請求數(shù)據(jù)時狀態(tài)loading
         FETCH_LOADING({
         commit
         }, res) {
         commit(types.FETCH_LOADING, res)
         },
        }
        const mutations = {
         // 請求數(shù)據(jù)時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里寫入判斷l(xiāng)oading事件即可:如下

        // axios的請求時間
        let axiosDate = new Date()
        export function fetch (url, params) {
         return new Promise((resolve, reject) => {
         axios.post(url, params)
         .then(response => {
         // 關(guān)閉 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) => {
         // 關(guān)閉 loading圖片消失
         store.dispatch('FETCH_LOADING', false)
         axiosDate = new Date()
         reject(error)
         })
         })
        }
        export default {
         // 組件中公共頁面請求函數(shù)
         commonApi (url, params) {
         if(stringQuery(window.location.href)) {
         store.dispatch('FETCH_LOADING', true);
         }
         axiosDate = new Date();
         return fetch(url, params);
         }
        }

        這樣就實現(xiàn)了,項目中當(dāng)加載數(shù)據(jù)的時候,顯示gif圖片,當(dāng)數(shù)據(jù)加載出來時消失。

        關(guān)于vue.js的學(xué)習(xí)教程,請大家點擊專題vue.js組件學(xué)習(xí)教程、Vue.js前端組件學(xué)習(xí)教程進行學(xué)習(xí)。

        更多vue學(xué)習(xí)教程請閱讀專題《vue實戰(zhàn)教程》

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        vue2實現(xiàn)數(shù)據(jù)請求顯示loading圖

        vue2實現(xiàn)數(shù)據(jù)請求顯示loading圖:一般項目中,有時候會要求,你在數(shù)據(jù)請求的時候顯示一張gif圖片,然后數(shù)據(jù)加載完后,消失。這個,一般只需要在封裝的axios中寫入js事件即可。當(dāng)然,我們首先需要在app.vue中,加入此圖片。如下: <template> <div id=app>
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 成人免费毛片内射美女-百度| AAA日本高清在线播放免费观看| 希望影院高清免费观看视频| 久久综合亚洲色HEZYO社区| 亚洲免费人成在线视频观看| 国产亚洲人成A在线V网站 | 亚洲精品无码中文久久字幕| 欧美三级在线电影免费| 亚洲欧洲日韩国产一区二区三区| 嫩草视频在线免费观看| 亚洲精品无码av片| 免费国产a国产片高清网站| 一级毛片免费在线观看网站| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲电影免费观看| 99久久久国产精品免费无卡顿| 亚洲综合在线一区二区三区 | 亚洲第一永久在线观看| 国产在线a免费观看| 精品韩国亚洲av无码不卡区| 免费a级毛片无码a∨性按摩| a级在线免费观看| 亚洲综合亚洲国产尤物| 午夜免费福利网站| 一本一道dvd在线观看免费视频 | 香港经典a毛片免费观看看| 久久亚洲精品无码播放| 无码国产精品一区二区免费16 | 亚洲午夜一区二区电影院| 免费无码不卡视频在线观看| 亚欧洲精品在线视频免费观看| 久久综合图区亚洲综合图区| 成人特黄a级毛片免费视频| 一级毛片免费不卡| 亚洲无限乱码一二三四区| 四虎永久免费地址在线网站| 野花香高清在线观看视频播放免费| 亚洲偷自精品三十六区| 国产亚洲AV夜间福利香蕉149| 91香蕉成人免费网站| 亚洲免费一区二区|