我无法重置根堆栈中的初始路由屏幕 - React Native

问题描述 投票:0回答:1

我正在使用 @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,
                    }}
                />
react-native
1个回答
0
投票

您可以通过编写以下代码直接重置到特定屏幕:

 navigation.reset({ routes: [{ name: 'Your Screen Name' }] })
© www.soinside.com 2019 - 2024. All rights reserved.