我正在学习React Native和Redux,我开始使用第三方库 – 特别是
React Navigation
我已经按照Dan Parker’s Medium Tutorial的教程进行了操作,但仍然无法使用它
我的应用程序的RootContainer:
<PrimaryNavigation /> ... export default connect(null,mapDispatchToProps)(RootContainer)
PrimaryNavigation定义:
const mapStateToProps = (state) => { return { navigationState: state.primaryNav } } class PrimaryNavigation extends React.Component { render() { return ( <PrimaryNav navigation={ addNavigationHelpers({ dispatch: this.props.dispatch,state: this.props.navigationState }) } /> ) } } export default connect(mapStateToProps)(PrimaryNavigation)
PrimaryNav定义:
const routeConfiguration = { LoginScreen: { screen: LoginScreen },MainContainer: { screen: MainContainer } } const PrimaryNav = StackNavigator( routeConfiguration,{ headerMode: 'none' }) export default PrimaryNav export const reducer = (state,action) => { const newState = PrimaryNav.router.getStateForAction(action,state) return newState || state; }
我的创建商店:
const rootReducer = combineReducers({ ... primaryNav: require('../Navigation/AppNavigation').reducer }) return configureStore(rootReducer,rootSaga)
我得到一个错误:
元素类型无效:期望一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:undefined.检查’PrimaryNavigation’的渲染方法
到目前为止我的理解是:
> RootContainer连接到商店 – 它拥有PrimaryNavigation
> PrimaryNavigation包含一个Navigator(PrimaryNav),它包装Navigator并将其传递给状态
> PrimaryNav是实际的导航器 – 我已经定义了路由和默认初始化
>处理PrimaryNav的reducer只是PrimaryNav.router.getStateForAction
我错过了初始状态吗?我没有正确地将它连接到Redux吗?我是否需要启动调度才能进入第一个屏幕?
谢谢