React native 如何使用react导航重置到不同的堆栈

React native 如何使用react导航重置到不同的堆栈,react-native,react-navigation,React Native,React Navigation,我们在react本机应用程序中使用默认导航系统,该应用程序目前有多个堆栈。我们希望从一个堆栈中的屏幕导航到另一个堆栈中的屏幕。这是不同堆栈的基本示例: const StackNavigator = createStackNavigator({ SplashScreen: connectToStore(SplashScreen), },{ initialRouteName: 'SplashScreen', mode: 'card' }) const ModalNavigator =

我们在react本机应用程序中使用默认导航系统,该应用程序目前有多个堆栈。我们希望从一个堆栈中的屏幕导航到另一个堆栈中的屏幕。这是不同堆栈的基本示例:

const StackNavigator = createStackNavigator({
  SplashScreen: connectToStore(SplashScreen),
},{
  initialRouteName: 'SplashScreen',
  mode: 'card'
})

const ModalNavigator = createStackNavigator({
  LoginScreen: connectToStore(LoginScreen),
})

const AppNavigator = createStackNavigator({
  StackNavigator: StackNavigator,
  ModalNavigator: ModalNavigator,
}, {
  initialRouteName: 'StackNavigator',
  headerMode: 'none',
  mode: 'modal'
})
问题是,如果我们尝试重置为新屏幕,如下所示:

const resetAction = StackActions.reset({
  index: 0,
  key: null,
  actions: [
    NavigationActions.navigate({
      routeName: 'LoginScreen',
    })
  ]
});
this.props.navigation.dispatch(resetAction);
我们得到一个类似这样的错误:

ExceptionsManager.js:74错误:没有为密钥定义路由 仪表板屏幕。必须是“StackNavigator”和“ModalNavigator”之一


因为这个问题在其他地方似乎没有很好的记录或回答

const resetAction = StackActions.reset({
  index: 0,
  key: null,
  actions: [
    NavigationActions.navigate({
      routeName: 'ModalNavigator',
      action: NavigationActions.navigate({
        routeName:'LoginScreen', 
        params:{}
      })
    })
  ]
});
this.props.navigation.dispatch(resetAction);
首先,我们需要指定要重置到的正确堆栈,在本例中是
ModalNavigator
,然后我们添加一个子动作,可以在其中指定导航器的屏幕,即
LoginScreen

作为将来的参考,我们可以使用

this.props.navigation.dispatch(StackActions.pop({ n:1 }));
其中n是要弹出的屏幕数,或只是要一直弹出的屏幕数:

this.props.navigation.dispatch(StackActions.popToTop());

我仍然无法从另一个堆栈中指定操作,它给我一个错误,并说必须是当前堆栈中的键之一。在哪里添加子操作?