このインターセプターをセットアップしました
const setupAxiosInterceptors = (onUnauthenticated: () => void) => {
const onRequestSuccess = (config: AxiosRequestConfig) => {
console.log("request success", config);
const token = Storage.local.get("auth");
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
};
const onRequestFail = (error: AxiosError) => {
console.log("request error", error);
return Promise.reject(error);
};
axios.interceptors.request.use(onRequestSuccess, onRequestFail);
const onResponseSuccess = (response: AxiosResponse) => {
console.log("response success", response);
return response;
};
const onResponseFail = (
error: { status: number } & { response: { status: number } }
) => {
const status = error.status || error.response.status;
if (status === 403 || status === 401) {
onUnauthenticated();
}
return Promise.reject(error);
};
axios.interceptors.response.use(onResponseSuccess, onResponseFail);
};
export default setupAxiosInterceptors;
反応ツールキットを使用したこのアクション
export const authLogoutEffects = () => (
dispatch: ThunkDispatch<{}, {}, AnyAction>
) => {
dispatch(authLogout());
Storage.local.remove("auth");
};
次に、私のindex.tsで
const { dispatch } = store;
setupAxiosInterceptors(() => {
dispatch(authLogoutEffects());
});
ストアは configureStore 反応ツールキットのインスタンスです
しかし、ディスパッチパラメーターにエラーがあります
タイプ '(dispatch: ThunkDispatch<{}, {}, AnyAction>) => void' の引数は、タイプ 'AnyAction | LocationChangeAction'. タイプ '(dispatch: ThunkDispatch<{}, {}, AnyAction>) => void' には、タイプ 'LocationChangeAction' の次のプロパティがありません: type, Payloadts(2345)
助けてくれませんか?