React native 反应堆栈导航自动启动第一个屏幕
我有一个下面的堆栈和开关导航器。以下是代码: 父堆栈React native 反应堆栈导航自动启动第一个屏幕,react-native,React Native,我有一个下面的堆栈和开关导航器。以下是代码: 父堆栈 const ParentStack = createStackNavigator( { Screen1, Screen2, Screen3, }, {headerMode: 'none', initialRouteName: 'Screen1'}, ); const UserStack = createStackNavigator( { Screen11, Screen22,
const ParentStack = createStackNavigator(
{
Screen1,
Screen2,
Screen3,
},
{headerMode: 'none', initialRouteName: 'Screen1'},
);
const UserStack = createStackNavigator(
{
Screen11,
Screen22,
Screen33,
},
{headerMode: 'none', initialRouteName: 'Screen11'},
);
const AppNavigator = createSwitchNavigator(
{
Auth,
ParentStack,
UserStack,
},
{
initialRouteName: 'Auth',
},
);
用户堆栈
const ParentStack = createStackNavigator(
{
Screen1,
Screen2,
Screen3,
},
{headerMode: 'none', initialRouteName: 'Screen1'},
);
const UserStack = createStackNavigator(
{
Screen11,
Screen22,
Screen33,
},
{headerMode: 'none', initialRouteName: 'Screen11'},
);
const AppNavigator = createSwitchNavigator(
{
Auth,
ParentStack,
UserStack,
},
{
initialRouteName: 'Auth',
},
);
开关堆栈
const ParentStack = createStackNavigator(
{
Screen1,
Screen2,
Screen3,
},
{headerMode: 'none', initialRouteName: 'Screen1'},
);
const UserStack = createStackNavigator(
{
Screen11,
Screen22,
Screen33,
},
{headerMode: 'none', initialRouteName: 'Screen11'},
);
const AppNavigator = createSwitchNavigator(
{
Auth,
ParentStack,
UserStack,
},
{
initialRouteName: 'Auth',
},
);
当我在“Auth”屏幕上时,我使用以下代码启动Screen2
:
this.props.navigation.navigate('Screen2')
屏幕2已成功启动。但当我按下Back键时,Screen1也出现在堆栈中。但我刚刚开始第二幕
- 这是自动启动堆栈中第一个屏幕的默认反应本机行为吗
- 有没有办法只启动Screen2
从“反应导航”导入{NavigationActions,StackActions}代码>
const resetAction = StackActions.reset({
index: 0,
actions: [
NavigationActions.navigate({routeName: 'your_screen_name'}), //MainTabbarScreen NavigationActions.navigate({ routeName: 'MainTabbarScreen' })//Login
],
});
this.props.navigation.dispatch(resetAction);
导航到屏幕2时使用上述代码。是,因为您正在从screen1
重定向到screen2
,所以screen1
中有stack@Ravi但是我从Auth
开始了Screen2
。那么,为什么仅仅因为堆栈中的第一个条目而启动了Screen1
?您可以通过Auth
stack中的initialRouteName
来更改它。如果您在同一堆栈中,上述代码将起作用。但是,正如您看到的Auth
屏幕在ParentStack
之外,以及当我尝试按照您的示例重置时。我得到错误:没有为按键屏幕2定义路由代码>。