Redux Saga-如何在登录后调用多个操作 [英] Redux Saga - How to call multiple actions after logging in

查看:0
本文介绍了Redux Saga-如何在登录后调用多个操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想要做的是在登录应用程序后,我想在我的传奇故事中调度几个动作,以获得完全否。反馈和员工。有人能帮我理解一下我是如何做到这一点的吗:-

登录传奇

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个这样的动作。

推荐答案

若要调度更多操作,您需要使用putyield put(getFeedbacksRequest())。但如果您需要在登录传奇中向服务器发出更多请求,则需要使用API调用创建类似的传奇,然后您可以在loginSaga中使用callall来调用它们。

这篇关于Redux Saga-如何在登录后调用多个操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆