我正在嘗試將標頭分配給axios.get,下面會引發錯誤。
import authHeader from './auth-header';
return axios.get(API_URL 'user', { headers: authHeader() });
函式如下:
export default function authHeader() {
const userStr = localStorage.getItem("user");
let user = null;
if (userStr)
user = JSON.parse(userStr);
if (user && user.accessToken) {
return { 'x-access-token': user.accessToken };
} else {
return {};
}
}
但是,如果我執行以下操作,它會起作用:
return axios.get(API_URL 'user', { headers: { 'Authorization': `token test` }});
我在這里錯過了什么?
uj5u.com熱心網友回復:
Axios 標頭的定義是...
type AxiosRequestHeaders = Record<string, string | number | boolean>;
TypeScript 無法從您的代碼中推斷出正確的回傳型別。
只需在您的函式上設定適當的回傳型別
export default function authHeader(): AxiosRequestHeaders {
//...
}
更好的選擇是正確輸入您的“用戶”資料
interface User {
accessToken?: string
}
export default function authHeader(): AxiosRequestHeaders {
const user = JSON.parse(String(localStorage.getItem("user"))) as User | null
return user?.accessToken ? { "x-access-token": user.accessToken } : {}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/370072.html
