【发布时间】:2020-09-17 05:29:10
【问题描述】:
所以,每当我启动我的服务器时。我不知道为什么,但我的 saga 功能在登录时不起作用。我已确保该操作正在运行。此外,一旦我重新加载页面,它就会开始工作。
这是我设置观察者的方式。
export function* watchUserLogin() {
console.log("login");
yield takeEvery(LOGIN_USER, loginUser);
}
export function* watchUserLogout() {
yield takeEvery(LOGOUT_USER, logoutUser);
}
function* authSaga() {
yield all([fork(watchUserLogin), fork(watchUserLogout)]);
}
也是我的主要传奇功能
function* loginUser({ payload: { user, history } }) {
try {
console.log("login");
const response = yield call(Login, user.email, user.password);
console.log(response, "ah");
if (response.status >= 200 && response.status < 300) {
const user = yield response.data;
sessionStorage.setItem("authUser", JSON.stringify(user));
console.log(user);
var decoded = jwt_decode(user.access);
yield put(loginSuccess(user));
if (decoded.is_preferences) {
history.push("/dashboard");
// const session = yield call(checkSession);
// console.log(session);
console.log(sessionStorage.getItem("authUser"));
} else {
history.push("/preferences");
// const session = yield call(checkSession);
// console.log(session);
}
} else {
throw response;
}
yield put(loginSuccess(user));
} catch (error) {
console.log(error.response.status);
yield put(loginFail(error.response.data, error.response.status));
}
}
【问题讨论】:
-
希望你已经实例化了 sagaMiddleware 并在 index.js 文件中注册了 sagas。
-
是的,我已经在 DOM 渲染上面初始化了
-
我没听懂你。我想您应该导出 authSaga 函数并在“redux-saga”的 createSagaMiddleware 函数中注册,例如 createSagaMiddleware().run(authSaga)。您可以将注册 saga 的代码粘贴到中间件或存储中吗?
标签: reactjs redux react-redux redux-saga