Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 反应堆栈导航自动启动第一个屏幕_React Native - Fatal编程技术网

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定义路由