本章概述
? ? ? ? axios的攔截器也是鉤子的一種,在請求或響應前可以定義一些操作。最廣泛的應用就是利用axios鉤子防止用戶多次點擊按鈕發(fā)送請求。?
應用場景
????????當用戶高頻率點擊提交按鈕可能就會把一個請求發(fā)送多次,為了防止這種情況。我們可以利用鉤子設置一個狀態(tài)isLoading。請求鉤子內置true,響應鉤子內置false,每次調用前判斷isLoading是否為真,如果為真不繼續(xù)請求。isLoading使用Vuex進行狀態(tài)管理。
圖文詳解
? ? ? ? ?首先vuex中添加一個狀態(tài)isLoading。如圖1,store.js寫入

圖1.store.js
? ? ? ? 然后添加攔截器,我寫在了main.js中。如圖2。使用store.commit()轉換isLoading的狀態(tài)。

圖2.main.js
? ? ? ? 最后在我二次封裝的axios中判斷isLoading。如果為真直接返回不請求。

圖3.axios.js
其他
? ? ? ? 除了在二次封裝的axios中判斷isLoading的真假。我們還可以通過編寫公共方法的方式,在公共方法中取isLoading的值,在參數(shù)準備等之前就調用方法型如(if(this.$common.checkLoading()))來判斷?;蛘咧苯釉诮M件中用computed讀vuex中的狀態(tài),在參數(shù)準備等之前判斷形如(this.isLoading)的值。