Vux+Axios攔截器增加loading的問題
很多時候,我們在頁面使用Ajax重新整理時候,會希望它出現loading的圖示,讓使用者體驗更好一些。那麼如果我們每次在Axios裡面進行請求,都要顯示loading圖示的話,那麼沒有一個全域性的方法的話,勢必會造成程式碼冗餘的問題。有什麼方法可以實現這個方法呢?
這裡,我們就要用到Axios的請求攔截器與相應攔截器了
首先,我們在請求攔截器裡面增加一個VUX的loading元件
axios.interceptors.request.use(
config => {
//請求攔截器,呼叫loading外掛 // 顯示loading // 判斷是否重複提交請求,也就是loading是否還存在,如果存在則不顯示新的loading let isShow = window.app.$vux.loading.isVisible() if(!isShow&&config.showLoading){ window.app.$vux.loading.show({ text: 'Loading' }) } config.data = JSON.stringify(config.data); config.headers = { 'Content-Type': 'application/json', } return config;
},
error => {
return Promise.reject(err);
}
);
整個資料裡面,我們看到了裡面有一個引數是$vux.loading.isVisible()這個。這個是vux自帶的一個loading狀態顯示的引數。如果loading正在顯示的話,它會是true,否則的話就顯示false
因為我們不希望同時有多個請求的時候,出現多個loading狀態,這樣的話使用者看起來會很迷茫,所以我們在呼叫的時候,先判斷一下這個狀態。
然後在響應攔截器裡面關掉它就好了
