反应导航路线状态以具有键和索引

react navigation route states to have key and index

我无法使用 NavigationActions.init() 或文档中提到的那个正确生成状态。 我的导航器是这样定义的:

const HomeNav = TabNavigator({
feed:{screen:Feed},
restaurantScreen:{screen:Restaurant},
},{
tabBarComponent:NavigationComponent,
tabBarPosition:'bottom',
tabBarOptions:{
    bottomNavigationOptions:{
        labelColor:'white',
        rippleColor:'white',
        tabs:{
            feed:{
                barBackgroundColor:'#37474F',
            },
            restaurantScreen:{
                barBackgroundColor:'#00796B',
            }
        }
    }
}
});
export const Navigator=StackNavigator(
{
    HomeScreen:{screen:Home},
    VerifyScreen:{screen:Verify},
    newUserScreen1:{screen:newUser1},
    newUserScreen2:{screen:newUser2},
    loginScreen:{screen:login},
    feedScreen:{screen:HomeNav},
},
{
    headerMode:'none',
},
);

这就是我设置初始状态的方式:

const initialState=Navigator.router.getStateForAction(
NavigationActions.init()
);

function navigate(screenName,state){
return Navigator.router.getStateForAction(NavigationActions.navigate({routeName:screenName},state));
}

出现以下错误: Expect nav state to have routes and index,{routeName:'feedScreen',key:...} 当导航到 Feed 选项卡导航器时。

在你的第二个代码片段中,它应该是这样的:

const initialState=Navigator.router.getStateForAction(
NavigationActions.init()
);

function navigate(screenName,state){
return Navigator.router.getStateForAction(NavigationActions.navigate({routeName:screenName}),state); 
}
  • getStateForAction 收到第二个 "state" 参数,您将其传递给 NavigationActions.navigate.

  • NavigationActions.init() 期望像 {routeName:'screen1'} 这样的任何对象作为初始化状态的参数。所以它应该是这样的:NavigationActions.init({routeName:'screen1'}).