如何跳过嵌套导航器的初始路线?

Zyg*_*gro 6 react-native react-navigation

我有一个像这样的导航:

Loading: SwitchNavigator {
  Auth: Stacknavigator,
  Main: StackNavigator,
  Onboard: StackNavigator,
}
Run Code Online (Sandbox Code Playgroud)

每个StackNavigators 都有一个初始路线集。在某些情况下,我想从loading导航器转到导航器上的特定路线onboard。如果我只使用navigator.navigate('DesiredRoute'),它也会挤入机载的initialRoute,因此导航堆栈看起来像[InitialRoute, DesiredRoute]而不是[DesiredRoute]。如何摆脱InitialRoute

代码示例:

// Loading.js

if (loadingComplete) {
  if (!user) {
    navigation.navigate('auth')
    return
  }
  if (user && userData) {
    navigation.navigate('Main')
    return
  }  
  if (onboardingCheckpointCleared) {
    // this creates `['InitialRoute', 'DesiredRoute']` instead of `['DesiredRoute']`
    navigation.navigate('DesiredRoute')
    return
  }
  navigation.navigate('Onboard')
}
Run Code Online (Sandbox Code Playgroud)

Gok*_*rni 2

这是预期的行为,如果您只想DesiredRoute出现,那么您必须设置该路线,Loading如下所示,

Loading: SwitchNavigator {
  Auth: Stacknavigator,
  Main: StackNavigator,
  Onboard: StackNavigator,
  DesiredRoute: ScreenName
}
Run Code Online (Sandbox Code Playgroud)

这样写不会产生任何冲突,你可以放心地写。