2017-12-16 6 views
0

redux 저장소에서 탐색 상태를 가져오고 문제가 발생했습니다. 이 오류가 무엇을 의미하는지 이해하려고 노력하고 있습니다. TypeError : 정의되지 않은 객체 ('nextState.routes.forEach'평가 중)React-Navigation 중첩 된 네비게이터가있는 Redux : TypeError : 정의되지 않음이 개체가 아닙니다 ('nextState.routes.forEach'평가 중 ...)

내비게이션 루트 렌더링 기능에 authcheck가있어 용도. 오른쪽 하나가 선택되었지만 사용하려고하면 위의 오류가 발생합니다.

AppNavigator 내부에는 두 개의 다른 탐색 경로가 있으므로 이렇게 구분됩니다.

-AppNavigator 
--SignedInNavigator 
---TabBar 
--SignedOutNavigator 
---StackNavigator 

오류가 발생했을 때 사용되는 탐색 개체입니다.

[exp] Object { 
[exp] "index": 0, 
[exp] "routes": Array [ 
[exp]  Object { 
[exp]  "action": Object { 
[exp]   "routeName": "Home", 
[exp]   "type": "Navigation/NAVIGATE", 
[exp]  }, 
[exp]  "key": "Init-id-1513449605995-1", 
[exp]  "routeName": "SignedOut", 
[exp]  "type": undefined, 
[exp]  }, 
[exp] ], 
[exp] } 

render() { 
    const { navigationState, dispatch, isLoggedIn } = this.props; 
    const state = isLoggedIn ? navigationState.stateForLoggedIn : navigationState.stateForLoggedOut; 

    return (
     <AppNavigator navigation={addNavigationHelpers({ dispatch, state })} /> 
    ); 
} 

필요할 경우 감속기와 같은 코드를 더 많이 제공 할 수 있습니다. 감속기가 나에게 내가 지금 기대하는 정보를 제공하기 때문에 나는 단지 이유가 아니다. 그러나 그것은 분명히 잘 소화되지 않고있다. 어떤 도움을 주셔서 감사합니다. 감사!

답변

0

나는 또한 새롭다 그러나 나를 위해 일했다. 다음은 두 개의 별도의 파일 ....

ReduxNavigation.js

import React from 'react' 
import * as ReactNavigation from 'react-navigation' 
import { connect } from 'react-redux' 
import AppNavigation from './AppNavigation' 

// here is our redux-aware our smart component 
function ReduxNavigation (props) { 
    const { dispatch, nav } = props 
    const navigation = ReactNavigation.addNavigationHelpers({ 
    dispatch, 
    state: nav 
    }) 

    return <AppNavigation navigation={navigation} /> 
} 

const mapStateToProps = state => ({ nav: state.nav }) 
export default connect(mapStateToProps)(ReduxNavigation) 

AppNavigation.js

import { StackNavigator } from 'react-navigation' 
import { Animated, Easing } from 'react-native' 
import LoginScreen from '../Containers/LoginScreen' 
import LaunchScreen from '../Containers/LaunchScreen' 
import HomeScreen from '../Containers/HomeScreen' 
import SignUpScreen from '../Containers/SignUpScreen' 
import SettingsScreen from '../Containers/SettingsScreen' 
import VehicleCreateScreen from '../Containers/VehicleCreateScreen' 
import styles from './Styles/NavigationStyles' 

// Manifest of possible screens 
const PrimaryNav = StackNavigator({ 
    LoginScreen: { screen: LoginScreen }, 
    LaunchScreen: { screen: LaunchScreen }, 
    HomeScreen: { screen: HomeScreen }, 
    SignUpScreen: { screen: SignUpScreen }, 
    SettingsScreen: { screen: SettingsScreen }, 
    VehicleCreateScreen: { screen: VehicleCreateScreen } 
}, { 
    // Default config for all screens 
    headerMode: 'none', 
    initialRouteName: 'LaunchScreen', 
    navigationOptions: { 
     headerStyle: styles.header 
    }, 
    transitionSpec: { 
     duration: 0, 
     timing: Animated.timing, 
     easing: Easing.step0, 
    }, 
    }, 

    transitionConfig =() => ({ 
    }), 


) 

export default PrimaryNav 
+1

지금은 내 변화를 선반까지 종료입니다. 내 주요 문제는 내가 가기 stacknavigator에 갈 두 가지 탐색기가 있다고 생각합니다. 내비게이션 트리가 예상대로 구축되지 않는다고 생각합니다. 모든 스크린을 최상위 레벨의 스택 네비게이터에 넣으면 작동하지만 사용자를 인증하고 스크린 네비게이터를 분리하는 데 문제가 있습니다. 내가 원하는 기능을 얻으려면 더 많은 구조를 변경해야한다고 생각합니다. – Runner5