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));