调用API后的React-redux导航

时间:2018-01-18 18:06:11

标签: react-native navigation react-redux react-navigation

下面是我的reducer代码。

import * as Helper from '../utils/helper';
import AppNavigator from "../Navigation/navigationStack";

const initialState = { user: "" };

export function pedagogyReducer(state = initialState, action){
  switch (action.type) {
    case 'REGISTER':{
      state = {
        ...state,
        user: action.newUser,
        showError: action.showError ? action.showError : false,
        errorMessage: action.errorMessage ? action.errorMessage: "",
      }
      console.log(action.showError);
      {
        ////////here I want to redirect to login if response if success else want to show error message
      }
      if(!action.showError){
        AppNavigator.router.getStateForAction(
          AppNavigator.router.getActionForPathAndParams("Login")
        );
        return state;
      } else {
        return state;
      }
      break;
    }
    default:
    return state;
  }
}

export default pedagogyReducer;

我不确定是否应该从reducer或其他文件重定向到成功/错误屏幕。我使用了reducer,action,middleware(fetch API)和react-navigation。

1 个答案:

答案 0 :(得分:1)

Reducers应该是纯函数,因此这不是放置重定向逻辑的最佳位置。

一个很棒的库,可以帮助处理基于Redux操作的副作用redux-saga,你应该看看他们的文档。

引用他们的网站:

  

redux-saga 是一个旨在使应用程序副作用(即数据提取等异步事件和访问浏览器缓存之类的不正确事物)更易于管理,执行效率更高,更简单的库测试,更好地处理故障。