如何在React-Navigation中实现自定义导航器?

时间:2018-05-15 15:01:51

标签: react-native react-navigation swipe-gesture

我正在尝试使用具有自定义复杂动画和行为的TabRouter实现基于TabRouter的自定义导航器,或多或少采用可滑动CoverFlow的方式。

有一些例子说明如何使用StackRouter做到这一点,但是在更改为TabRouter时它们都不起作用。

到目前为止,我已经明白要获得像TabNavigator这样的导航器,我需要一个像以下的功能:

(routeConfigs, config = {}) => (
    createNavigationContainer(
        createNavigator(TabRouter(routeConfigs, config))(MyNavigationView)
    )
);

如何实施MyNavigationView作为我的主要讯问。

文档在导航器的每个组件上都非常肤浅,在大多数情况下将描述保持为单个句子。那么,究竟是什么,以及它的作用是什么:

  • 路由器
  • 导航视图
  • 过渡者(我应该使用吗?)

我(以及如何)渲染_renderScene函数中的所有场景吗?

如何隐藏当前未显示的场景?

我想我应该使用MyNavigationView内部的PanResponder来处理滑动手势。当用户刷新到新场景时,我应该(以及,如果是,如何)更新路由器的状态?

此外,我不想使用TabNavigator在内部使用的AnimatedTabView react-native-tab-view,因为它在iOS上不适合我(conflict between ScrollView and PanResponder which likely won't be fixed for a while

这是很多问题,但我有点失落。我一直在寻找React Navigation的来源,但它们仍让我感到困惑。

即使是部分答案也会有所帮助。

1 个答案:

答案 0 :(得分:0)

我认为这可以帮助:https://github.com/react-navigation/react-navigation/blob/master/examples/NavigationPlayground/js/CustomTabs.js

那么也许您可以像这样更新您的功能?

createNavigationContainer(
  createNavigator(MyNavigationView, TabRouter(routeConfigs, config), {})
)