下面是我的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。
答案 0 :(得分:1)
Reducers应该是纯函数,因此这不是放置重定向逻辑的最佳位置。
一个很棒的库,可以帮助处理基于Redux操作的副作用redux-saga,你应该看看他们的文档。
引用他们的网站:
redux-saga 是一个旨在使应用程序副作用(即数据提取等异步事件和访问浏览器缓存之类的不正确事物)更易于管理,执行效率更高,更简单的库测试,更好地处理故障。