如何在Redux-Saga中实现回调?

场景是,我要重定向用户或根据成功显示警报,在分派操作后显示错误回调。

下面是使用 完成任务的代码

this.props.actions.login(credentials)

.then((success)=>redirectToHomePage)

.catch((error)=>alertError);

因为redux-thunk中的调度动作返回了Promise,所以响应起来很容易。

但是现在,我开始沉迷于redux-

saga,试图弄清楚如何获得与上述代码相同的结果。由于Saga在不同的线程上运行,因此无法从上面的查询中获取回调。所以我只想知道你们是如何做到的。还是在使用redux-

saga时处理回调的最佳方法是什么?调度动作如下所示:

this.props.actions.login(凭证);

和传奇

function* login(action) {

try {

const state = yield select();

const token = state.authReducer.token;

const response = yield call(API.login,action.params,token);

yield put({type: ACTION_TYPES.LOGIN_SUCCESS, payload:response.data});

yield call(setItem,AUTH_STORAGE_KEY,response.data.api_token);

} catch (error) {

yield put({type: ACTION_TYPES.LOGIN_FAILURE, error})

}

}

传奇监视器

export function* loginMonitor() {

yield takeLatest(ACTION_TYPES.LOGIN_REQUEST,login);

}

动作创造者

function login(params) {

return {

type: ACTION_TYPES.LOGIN_REQUEST,

params

}

}

回答:

我认为您应该向登录生成器添加重定向和警报。这样,所有逻辑都在传奇中,并且仍然易于测试。所以基本上您的登录传奇看起来像这样:

function* login(action) {

try {

const state = yield select();

const token = state.authReducer.token;

const response = yield call(API.login,action.params,token);

yield put({type: ACTION_TYPES.LOGIN_SUCCESS, payload:response.data});

yield call(setItem,AUTH_STORAGE_KEY,response.data.api_token);

yield call(redirectToHomePage); // add this...

} catch (error) {

yield put({type: ACTION_TYPES.LOGIN_FAILURE, error});

yield call(alertError); // and this

}

}

以上是 如何在Redux-Saga中实现回调? 的全部内容, 来源链接: utcz.com/qa/422868.html

回到顶部