我正在使用 @react-navigation/native 升级的当前版本,但我正在尝试使用 CommonAction.reset() 不起作用来重置索引 0 场景:一旦我在根堆栈中登录启动屏幕,最初显示 3 秒延迟,然后导航到仪表板,我就进入登录页面,我的问题是为什么启动屏幕最初显示我已经尝试了很多方法来在登录时重置初始屏幕或注销不起作用
type SplashScreenProp = NativeStackNavigationProp<RootStackParamList, 'Splash'>;
const Splash = () => {
const navigation = useNavigation<SplashScreenProp>();
navigation.dispatch(
CommonActions.reset({
index: 0,
routes: [{ name: 'TabRoot' }],
})
);
const RootNavigator = () => {
return (
<HeaderButtonsProvider stackType="native">
<RootStack.Navigator
screenOptions={{
headerBackTitleVisible: false,
headerTitleStyle: screenOptions,
headerTitleAlign: 'center',
}}>
<RootStack.Screen name="Splash" component={Splash} options={{ title: '', headerShown: false }} />
<RootStack.Screen name="Login" component={Login} options={{ title: '', headerShown: false, animation: 'fade' }} />
<RootStack.Screen name="TabRoot" component={TabNavis} options={{ title: '', headerShown: false }} />
<RootStack.Screen
name="Settings"
component={Settings}
options={{
title: 'Settings',
headerTitleStyle: screenOptions,
}}
/>
您可以通过编写以下代码直接重置到特定屏幕:
navigation.reset({ routes: [{ name: 'Your Screen Name' }] })