在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ redux中如何避免重復(fù)定義每個(gè)異步action 的開始請(qǐng)求,請(qǐng)求成功,請(qǐng)求失敗

redux中如何避免重復(fù)定義每個(gè)異步action 的開始請(qǐng)求,請(qǐng)求成功,請(qǐng)求失敗狀態(tài)?

主要是想根據(jù)不同的請(qǐng)求狀態(tài)來進(jìn)行不同的組件渲染,比如開始請(qǐng)求,就將組件渲染為 loading,請(qǐng)求成功就開始渲染數(shù)據(jù)列表等等。

這里有個(gè)問題,如果把這三個(gè)action 定義成全局的,然后要用到再引入的話,那這樣當(dāng)我進(jìn)入第一個(gè)頁面,狀態(tài)依次經(jīng)歷了請(qǐng)求中,請(qǐng)求成功。 當(dāng)我進(jìn)入第二個(gè)頁面的時(shí)候,這時(shí)候請(qǐng)求狀態(tài)已經(jīng)是成功的狀態(tài)了,那我那些需要有數(shù)據(jù)才能渲染的組件,這個(gè)時(shí)候就會(huì)報(bào)錯(cuò)了(因?yàn)橐贿M(jìn)來的時(shí)候,判斷到狀態(tài)已經(jīng)是 成功了,所以就渲染,此時(shí)是沒有數(shù)據(jù)的)

求指教一種可行的方案~

回答
編輯回答
陌南塵

其實(shí)不必這樣,axios有一個(gè)全局?jǐn)r截器,可以攔截發(fā)送請(qǐng)求和接受請(qǐng)求。然后你寫一個(gè)loading組件,在全局?jǐn)r截器中引入,發(fā)送請(qǐng)求時(shí)候渲染loading,結(jié)束后隱藏loading。至于你說的渲染數(shù)據(jù)的問題,可以在組件內(nèi)利用條件渲染來做。有數(shù)據(jù)就渲染,沒有數(shù)據(jù)就渲染null。具體代碼如下:

import axios from 'axios';
import { Toast } from 'antd-mobile';
axios.interceptors.request.use((config)=>{
    Toast.loading('加載中',0);
    return config
});
axios.interceptors.response.use((config)=>{
    Toast.hide();
    return config
});
2018年9月20日 23:20