Reactjs Saga中的yield axios.get()调用将路径名更改为默认位置/&引用;
我有一个从本地存储中检索令牌并自动登录用户的传奇故事Reactjs Saga中的yield axios.get()调用将路径名更改为默认位置/&引用;,reactjs,react-router,axios,connected-react-router,Reactjs,React Router,Axios,Connected React Router,我有一个从本地存储中检索令牌并自动登录用户的传奇故事 export function* authCheckState(action) { const token = localStorage.getItem("jwt"); const expDate = localStorage.getItem("expDate"); if (!token) { yield put(actions.logout()); }
export function* authCheckState(action) {
const token = localStorage.getItem("jwt");
const expDate = localStorage.getItem("expDate");
if (!token) {
yield put(actions.logout());
} else {
const expirationDate = new Date(expDate);
if (expirationDate <= new Date()) {
yield put(actions.logout());
} else {
axios.defaults.headers.common['Authorization'] = token;
const username = localStorage.getItem('username');
// const loggedInUser = yield axios.get(`/users/${username}`);
// console.log('HERE');
yield put(actions.loginSuccess());
yield put(
actions.fireTimeout(
(expirationDate.getTime() - new Date().getTime())
// 10 * 1000 // ms
)
);
}
}
}
当我添加此axios调用时。我被重定向到主页“/”
之前:工作
之后:发生不工作重定向
我想发表评论,但由于篇幅不够,可能您应该使用
yield call (Api.fetchUser,username)
其中
Api.fetchUser
是一个函数,它在内部命中rest Api并返回承诺。有趣的是,我更改了调用顺序,现在它工作正常
yield put(actions.loginSuccess());
const loggedInUser = yield axios.get(`/users/${username}`);
yield put(actions.loginSuccess(username, loggedInUser.data));
谢谢,但我已修复。我不确定这是否与您的路由器更改有关,但在发出axios请求时,您应该使用saga的“调用”api。
yield put(actions.loginSuccess());
const loggedInUser = yield axios.get(`/users/${username}`);
yield put(actions.loginSuccess(username, loggedInUser.data));