作一個全局的loading,放在攔截器中,這樣就不用修改其餘的代碼或者vue中的引入。vue
state裏面定義一個全局的loading屬性,並初始化,例如:ios
isGlobalSpin: false, // 全局Loading
在mutations裏面定義去改變這個屬性的函數,例如:axios
changeGlobalSpin (state, show) { state.isGlobalSpin = show; },
<Spin fix v-if="spinShow"> <Icon type="load-c" size=18 class="demo-spin-icon-load"></Icon> <div>Loading</div> </Spin>
我直接用的官網的樣式app
.demo-spin-icon-load{ animation: ani-demo-spin 1s linear infinite; }
而後定義spinShow函數決定是否顯示loading,寫在computed裏面iview
spinShow () { return this.$store.state.app.isGlobalSpin; }
別忘了引入axios函數
import axios from 'axios'
攔截器:post
// Add a request interceptor axios.interceptors.request.use(function (config) { // Do something before request is sent store.commit('changeGlobalSpin', true); return config; }, function (error) { // Do something with request error return Promise.reject(error); }); // Add a response interceptor axios.interceptors.response.use(function (response) { // Do something with response data store.commit('changeGlobalSpin', false); return response; }, function (error) { // Do something with response error return Promise.reject(error); });
import axios from 'axios' // get一樣適用 axios.post("#", {}).then(function(response){console.log(response)}).catch(function(error){console.log(error)})