Как предотвратить отображение анимации перехода в режиме response-navigation во время StackAction.reset?

Используя response-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',
            }),
        ],
    }),
);


person patdugan    schedule 15.01.2020    source источник


Ответы (2)


Вы можете отключить анимацию для этих экранов, добавив animationEnabled: false в navigationOptions ваших Home и Landing экранов.

Home.navigationOptions = {
  animationEnabled: false
}
person satya164    schedule 15.01.2020
comment
Сработало отлично! Спасибо! - person patdugan; 16.01.2020
comment
Привет, @ satya164 Было бы здорово, если бы был способ отключить анимацию для исходящего маршрута, а не для того, на который вы переходите. - person Bright Lee; 03.07.2020

React Navigation 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 >
person Ajmal Hasan    schedule 07.09.2020