首页 > 解决方案 > Redux Saga - 如何在登录后调用多个操作

问题描述

我想做的是在登录应用程序后,我想在我的 sagas 中发送几个动作来获得总数。反馈和员工。有人可以帮助我了解如何做到这一点:-

登录传奇

function* loginSaga(action) {
  try {
    const userData = yield call(api.auth.login, action.payload);
    yield put(actions.loginUser(userData));

    //Save to localstorage
    localStorage.setItem("jwtToken", userData.token);
    //Set token to auth header
    setAuthToken(userData.token);
    //Decode token to get userData
    const decoded = jwt_decode(userData.token);
    //Set Current User
    yield put(actions.setCurrentUser(decoded));
    history.push("/review");
  } catch (err) {
    yield put(actions.loginUserErrors(err.response.data));
  }
}

这是我的行动

//Complete login user
export const loginUserRequest = userData => ({
  type: actionTypes.LOGIN_USER_REQUEST,
  payload: userData
});

export const loginUser = userData => ({
  type: actionTypes.LOGIN_USER,
  payload: userData
});

export const loginUserErrors = errors => ({
  type: actionTypes.GET_ERRORS,
  payload: errors
});

所以我想在登录传奇中采取更多行动,例如

//Get Feedbacks
export const getFeedbacksRequest = () => ({
  type: actionTypes.GET_FEEDBACKS_REQUEST
});

export const getFeedbacks = feedbacks => ({
  type: actionTypes.GET_FEEDBACKS,
  payload: feedbacks
});

export const getFeedbacksErrors = errors => ({
  type: actionTypes.GET_ERRORS,
  payload: errors
});

如何在登录传奇中添加更多内容,以便在用户登录时调度这些操作并获取列表。

我尝试添加它,yield call(getFeedbacksRequest())但它抛出了一个错误。我想添加 3-4 个这样的动作。

标签: reactjsredux-saga

解决方案


您可以将它们捆绑在一个数组中,如下所示:

yield all([
    put(actionOne()),
    put(actionTwo()),
]);

推荐阅读