方案是,我想在调度操作后根据成功,错误回调重定向用户或显示警报.
下面是使用redux-thunk执行任务的代码
this.props.actions.login(credentials)
.then((success)=>redirectToHomePage)
.catch((error)=>alertError);
Run Code Online (Sandbox Code Playgroud)
因为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})
}
}
Run Code Online (Sandbox Code Playgroud)
传奇监视器
export function* loginMonitor() {
yield takeLatest(ACTION_TYPES.LOGIN_REQUEST,login);
}
Run Code Online (Sandbox Code Playgroud)
行动创造者
function login(params) {
return {
type: ACTION_TYPES.LOGIN_REQUEST,
params
}
}
Run Code Online (Sandbox Code Playgroud)