0

如何在登录成功时通过动作类型与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; 

回答

0

可以粘贴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); 
+0

我试着仍然没有工作 – jack

+0

我的店app.js ...我的问题是为什么当im成功登录时,无法发送类型:'我的减速器中登录'...它工作时,我单击按钮,然后发送类型:'登录',但当成功登录不能发送类型:'登录' – jack

相关问题