繁体   English   中英

React Native Router Flux(react-native-router-flux)-减速器中的调用动作

[英]React Native Router Flux (react-native-router-flux) - call action in reducer

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

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之类的操作以重定向到下一个屏幕。 当我在化简器中调用“动作”时会出现一些错误,这可能是错误的方法。

您不应使用减速器触发动作。 您有2个otpions:

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

case LOGIN_SUCCESSFUL:

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

这样,在您的容器连接到您的状态时,您可以检查此state.loggedIn值,并通过调度过渡操作来相应地触发过渡。

2)在处理登录API响应时,在成功回复后,您可以简单地分派过渡场景操作以重定向到下一个屏幕(可以将其与成功的登录操作分派结合使用)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM