首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React Native Router Flux (react-native-router-flux) - reducer中的调用操作

问React Native Router Flux (react-native-router-flux) - reducer中的调用操作
EN

Stack Overflow用户
提问于 2016-09-27 15:18:31
回答 1查看 340关注 0票数 0

我有一个问题,关于从一个减速器调用一个动作,或者只是重定向到另一个场景。我想在用户成功登录后重定向到某个场景。我有我的action.js,它使用'redux-api-middleware‘模块:

action.js

代码语言:javascript
复制
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

代码语言:javascript
复制
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中的操作时,我得到了一些错误,这可能是错误的方法。

EN

回答 1

Stack Overflow用户

发布于 2016-09-27 17:24:09

你不应该用你的减速机触发动作。你有两个耳机:

1)当您的用户登录成功后,您可以在您的状态中反映出来:

代码语言:javascript
复制
case LOGIN_SUCCESSFUL:

    return {
        ...state,
      error: null,
      isFetching: false,
      loggedIn: true,
    }; 

这样,在连接到状态的容器中,您可以检查此state.loggedIn值,并通过分派转换操作来相应地触发转换。

2)当您正在处理登录API响应时,成功回复后,您只需调度您的过渡场景操作即可跳转到下一个屏幕(您可以将此操作与您成功的登录操作调度结合使用)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39718434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档