reactjs - axios请求token在刷新页面时返回null
问题描述
"axios": "^0.20.0",
"react": "^16.14.0",
"redux": "^4.0.5",
"redux-logger": "^3.0.6",
"redux-persist": "^6.0.0",
"redux-thunk": "^2.3.0"
我正在使用axios,并且我正在发送一个使用效果的请求,它可以工作,但是当我刷新页面(F5)时,我从 redux 获取并将其添加到 axios 实例中的令牌为空
axios.interceptors.request.use(
function (config) {
const token = store.getState().auth.token;
config.headers.Authorization = `Bearer ${token}`;
// Do something before request is sent
console.log("req config", config);
return config;
},
function (error) {
// Do something with request error
return Promise.reject(error);
}
);
这只是一个 api 调用,在刷新时我的令牌是'Bearer null':
useEffect(() => {
getAssessments();
getGroups();
getAssessmentUsers();
}, []);
解决方案
您需要在刷新后等待令牌rehydrated
在您的 redux 存储中,它不会立即发生。如果这仍然不起作用,您需要验证令牌是否与redux-persist
.
useEffect(() => {
if (token) {
getAssessments();
getGroups();
getAssessmentUsers();
}
}, [token]);
这个 useEffect 钩子会在token
更改时触发,例如:prevToken !== token,所以你还需要添加 if 语句来在 token 不为 null 时执行请求
推荐阅读
- c# - 在 AutoFac 容器之间共享实例
- javascript - Unity3D - 错误提示意外符号“扩展”
- regex - 正则表达式匹配美元符号和以下空格
- csv - 无法读取 csv 文件 Apache Zeppelin 0.8
- java - 编写同时接受字符串和字符串列表的 Jackson 注释
- asp.net-mvc - 应用完全初始化后交换插槽
- internet-explorer - Nuxt 和 Internet Explorer
- c# - 添加到列表会重复
- excel-formula - 带有变量数组的索引匹配
- ios - 可见单元格的 Swift collectionView 方法未更改