如何防止反应导航在 StackAction.reset 期间显示过渡动画?

How do I prevent react-navigation from showing a transition animation during StackAction.reset?

使用 react-navigation-stack 1.10.3,重置 StackActions 会在没有过渡的情况下加载新堆栈。与 react-navigation-stack 2.0.15 相同的代码片段添加了一个平台默认转换,iOS 是 SlideFromRightIOS。

如何在 1.10.X 和 2.0.X 上复制之前的行为,其中在堆栈重置时没有转换?

navigation.dispatch(
    StackActions.reset({
        index: 0,
        actions: [
            NavigationActions.navigate({
                routeName: user ? 'Home' : 'Landing',
            }),
        ],
    }),
);

您可以通过在 HomeLanding 屏幕的 navigationOptions 中添加 animationEnabled: false 来禁用这些屏幕的动画。

Home.navigationOptions = {
  animationEnabled: false
}

React导航V5

{/* Screen level */}
<NavigationContainer>
  <Stack.Navigator>
    <Stack.Screen
      name="HomeScreen"
      component={HomeScreen}
      options={{
        animationEnabled: false,
      }}
    />
  </Stack.Navigator>
</NavigationContainer>

{/* Whole navigation stack */}
<Stack.Navigator screenOptions={{ animationEnabled: false }}></Stack.Navigator>

否则你可以这样做来避免 android 中的闪烁效果:

import { createStackNavigator, CardStyleInterpolators } from '@react-navigation/stack';

<Stack.Navigator 
initialRouteName="CustomFooter" headerMode="none" 
screenOptions={{ cardStyleInterpolator: Platform.OS == 'ios' ? CardStyleInterpolators.forHorizontalIOS : CardStyleInterpolators.forNoAnimation }} >
</Stack.Navigator >