如何在反应导航中传递动作类型redux?
问题描述:
如何在登录成功时通过动作类型与redux进行反应导航?如何在反应导航中传递动作类型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,以及如何采取行动的登录传递到这里,我尝试自己当登录乃成功,但不能传递行动typelogin到这里
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;
答
可以粘贴redux/es/createStore
,希望看到dispatch
方法如何被出口
,哪些是你可以做的是:
export function login(data) {
if (data.email === 'me') {
dispatch({type: 'Login'});
}else{
console.log("login error");
}
}
看看http://redux.js.org/docs/basics/Store.html,我没有看到任何store
在你的代码
后你可以将减速器结合到商店中,你可以做这样的事情
import { createStore } from 'redux'
let store = createStore(reducers); //connecting reducers to store
.
..
...
export dispatch = (action) => store.dispatch(action);
我试着仍然没有工作 – jack
我的店app.js ...我的问题是为什么当im成功登录时,无法发送类型:'我的减速器中登录'...它工作时,我单击按钮,然后发送类型:'登录',但当成功登录不能发送类型:'登录' – jack