在反应本机中更改导航动画方向?

Pat*_*rty 2 navigation react-native stack-navigator

我目前正在开发一个用react-native 编写的移动应用程序。该项目有许多不同的屏幕,所有这些屏幕都使用 createStackNavigator 进行配置。

我需要能够动态更改动画方向。我可以在应用程序的不同部分导航到同一页面,但需要不同的动画。(动画是指当前屏幕退出视图的方向)

我知道在定义选项以设置导航方向时可以将选项传递到屏幕。不幸的是,这对我来说没有用,因为动画可能会因页面而异。

我的项目中的示例屏幕声明(名称已被清理):

<NavigationContainer ref={navigationRef}>
  <Stack.Navigator initialRouteName={initialRoute}>
     <Stack.Screen name="screen1" component={screen1} options={{headerShown: false, gestureEnabled: false}} />
     <Stack.Screen name="screen2" component={screen2} options={{headerShown: false, gestureEnabled: false}} />
     <Stack.Screen name="screen3" component={screen3} options={{headerShown: false, gestureEnabled: false}} />
     <Stack.Screen name="screen4" component={screen4} options={{headerShown: false, gestureEnabled: false}} />
  </Stack.Navigator>
</NavigationContainer>
Run Code Online (Sandbox Code Playgroud)

导航重置示例:

  navigation.reset({
    index: 0,
    routes: [{ name: "screen1", params: { param1: 'paramStrData' } }]
  });
Run Code Online (Sandbox Code Playgroud)

导航替换示例:

navigation.replace('screen2', { param1: 'param1StrData'})
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望能够将导航动画方向传递给替换或重置功能。

这是可能吗?

再次提前致谢。

小智 10

添加道具 persentation ,animationTypeForReplace ,像这样的动画。

        <Stack.Screen
              name="screen1"
              component={screen1}
              options={{
              headerShown: false,
              presentation: 'modal',
              animationTypeForReplace: 'push',
              animation:'slide_from_right'
            }}
            />
Run Code Online (Sandbox Code Playgroud)