React Navigation 5.x 基于参数的导航过渡动画

Kas*_*sra 5 animation reactjs react-native react-navigation

是否可以根据特定传递的参数启用/禁用导航过渡动画?

navigation.navigate('SomeScreen', {
          data: someData,
          withAnimation: true,
        });
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,withAnimation参数设置为true,因此我希望此处设置的动画 ( forRevealFromBottomAndroid) 处于活动状态:

<Stack.Screen
        name="SomeScreen"
        component={SomeScreen}
        options={{
          headerLeft: null,
          headerShown: false,
          cardStyleInterpolator:
            CardStyleInterpolators.forRevealFromBottomAndroid,
        }}
      />
Run Code Online (Sandbox Code Playgroud)

小智 8

是的,这是可能的。您可以通过以下方式实现:

在您的导航器中:

<Stack.Screen
        name="SomeScreen"
        component={SomeScreen}
        options={({route: {params}}) => ({
          headerLeft: null,
          headerShown: false,
          cardStyleInterpolator: params?.withAnimation
              ? CardStyleInterpolators.forHorizontalIOS
              : CardStyleInterpolators.forNoAnimation,
        })}
/>
Run Code Online (Sandbox Code Playgroud)

您导航的位置:

navigation.navigate('SomeScreen', {
    data: someData,
    withAnimation: true
});
Run Code Online (Sandbox Code Playgroud)


小智 0

是的,你可以这样做:

let animation = false;
cardStyleInterpolator: animation ? CardStyleInterpolators.forNoAnimation : CardStyleInterpolators.forHorizontalIOS
Run Code Online (Sandbox Code Playgroud)