react-native - react 导航: Applying separate transitions to scenes

标签 react-native react-navigation

我想对我的 React Native (iOS) 应用程序的 React Navigation 中的 StackNavigator 中的场景应用不同的过渡。

export const AppNavigator = StackNavigator({
  Home: { screen: Home },
  NewChild: { screen: NewChild },
  Journal: { screen: Journal }
});

我可能希望 NewChild 从下向上加载,就像模态一样。或者我可能希望它从右向左滑入。如果这个可以定制就太好了。从文档来看,您似乎只能将 StackNavigation 设置为卡片或模态。

最佳答案

感谢线程中的每个人,它对我有用。

我有许多场景仅由一个 StackNavigator 管理,我想为其中一些制作不同的动画。

首先,我在路由器中将自己设置为常量,其中包括我想要通过水平过渡显示的每个场景:

const horizontalTransitionScenes = [
  AddContact,
];

之后,我使用 StackNavigator 设计了我的应用程序路由器:

const App = StackNavigator({
  AddContact: {
    screen: AddContact,
  },
  EditContact: {
    screen: EditContact,
  },
});

我使用CardStackStyleInterpolator来修改场景之间的过渡。我可以这样导入: import CardStackStyleInterpolator from 'react-navigation/src/views/CardStack/CardStackStyleInterpolator';

我们现在可以向 StackNavigator 添加 transitionConfig 参数,以根据场景显示不同的动画:

 const App = StackNavigator(
{
    AddContact: {
        screen: AddContact
    },
    EditContact: {
        screen: EditContact
    }
},
{
    transitionConfig: (currentState: any) => {
        if (
            currentState.scenes[
                currentState.scenes.length - 1
            ].route.routeName.includes(horizontalTransitionScenes)
        ) {
            return {
                screenInterpolator: CardStackStyleInterpolator.forHorizontal
            };
        }
        return {
            screenInterpolator: CardStackStyleInterpolator.forVertical
        };
    }
}
);

通过 StackNavigator 实现,您将能够为您想要的场景显示不同类型的动画。

祝你有美好的一天🎉

关于react-native - react 导航: Applying separate transitions to scenes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44988825/

相关文章:

react-native - 获取触摸事件相对于Image的坐标

xcode - react 原生上不存在 CFBundleIdentifier

ios - react native : Removing the bottom border from NavigatorIOS

ios - 已选择和未选择状态的 react 导航中的不同 tabBar 图标?

javascript - 如何从我的应用程序中删除标题?为什么显示标题?

javascript - react native 和 socket.io Node 不起作用

ios - React Native - React Native 可以做什么,不可以做什么?

javascript - 停止显示内联文本

react-native - 如何在 React Navigation Stacknavigator 中制作自定义 HeaderTitle?

react-native - 如果我从一个页面返回到另一个页面,navigation.navigate()、navigation.push()、navigation.goBack() 和 navigation.popToTop() 之间有什么区别?