我有一个问题,关于从一个减速器调用一个动作,或者只是重定向到另一个场景。我想在用户成功登录后重定向到某个场景。我有我的action.js,它使用'redux-api-middleware‘模块:
action.js
export const LOGIN_REQUEST = 'LOGIN_REQUEST';
export const LOGIN_SUCCESSFUL = 'LOGIN_SUCCESSFUL';
export const LOGIN_FAILED = 'LOGIN_FAILED';
export function login(data) {
return {
[CALL_API]: {
endpoint: API_ROOT + 'login',
method: 'POST',
types: [LOGIN_REQUEST, LOGIN_SUCCESSFUL, LOGIN_FAILED],
body: JSON.stringify(data)
}
}
}reducer.js
function login(state = initalstate, action){
switch (action.type) {
case LOGIN_REQUEST:
return {
...state,
isFetching: true
};
case LOGIN_FAILED:
return {
...state,
error: action.error,
isFetching: false
};
case LOGIN_SUCCESSFUL:
return {
...state,
error: null,
isFetching: false
};
break;
default:
return state;
}
}现在,如果我得到LOGIN_SUCCESSFUL,我想调用一个像ActionsMY_SCENE_KEY这样的操作来重定向到下一个屏幕。当我调用reducer中的操作时,我得到了一些错误,这可能是错误的方法。
发布于 2016-09-27 17:24:09
你不应该用你的减速机触发动作。你有两个耳机:
1)当您的用户登录成功后,您可以在您的状态中反映出来:
case LOGIN_SUCCESSFUL:
return {
...state,
error: null,
isFetching: false,
loggedIn: true,
}; 这样,在连接到状态的容器中,您可以检查此state.loggedIn值,并通过分派转换操作来相应地触发转换。
2)当您正在处理登录API响应时,成功回复后,您只需调度您的过渡场景操作即可跳转到下一个屏幕(您可以将此操作与您成功的登录操作调度结合使用)。
https://stackoverflow.com/questions/39718434
复制相似问题