【发布时间】:2017-05-27 07:44:35
【问题描述】:
如何在登录成功时通过redux反应导航传递动作类型?
这是我的代码...
import { Login } from '../constant/Constant'
import { NavigationActions } from "react-navigation";
import dispatch from "redux/es/createStore";
export function login(data) {
if (data.email === 'me') {
//NavigationActions.navigate({ routeName: 'Route' });
console.log("login success");
return (dispatch) => {
dispatch({type: 'Login'});
};
}else{
console.log("login error");
}
}
这是我的reducer.js,以及如何将动作登录传递到这里,我在登录成功时尝试自己但无法将动作类型登录传递到这里
import { combineReducers } from 'redux';
import { NavigationActions } from 'react-navigation';
import { AppNavigator } from '../navigators/AppNavigator';
import { reducer as formReducer } from 'redux-form'
const firstAction = AppNavigator.router.getActionForPathAndParams('Main');
const tempNavState = AppNavigator.router.getStateForAction(firstAction);
const secondAction = AppNavigator.router.getActionForPathAndParams('Login');
const initialNavState = AppNavigator.router.getStateForAction(
secondAction,
tempNavState
)
function nav(state = initialNavState, action) {
let nextState;
switch (action.type){
case 'Login':
nextState = AppNavigator.router.getStateForAction(
NavigationActions.back(),
state
);
break;
case 'Logout':
nextState = AppNavigator.router.getStateForAction(
NavigationActions.navigate({routeName: 'Login'}),
state
);
break;
default:
nextState = AppNavigator.router.getStateForAction(action, state);
break;
}
return nextState || state;
}
const initialAuthState = { isLoggedIn: false };
//如何将登录名从action.js传递到这里
function auth(state = initialAuthState, action) {
switch (action.type){
case 'Login':
console.log(action.type);
return { ...state, isLoggedIn:true };
case 'Logout':
return { ...state, isLoggedIn:false};
default:
return state;
}
}
const AppReducer = combineReducers({
nav,
auth,
form: formReducer
})
export default AppReducer;
【问题讨论】:
标签: react-native react-redux react-native-android react-navigation