React native 如何使用react导航重置到不同的堆栈
我们在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 =
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());
我仍然无法从另一个堆栈中指定操作,它给我一个错误,并说必须是当前堆栈中的键之一。在哪里添加子操作?