React Navigation与React Native Navigation的比较

91

React Native Navigation和React Navigation是React Native的两种主要导航解决方案,它们之间的技术差异主要在以下几个方面:

  • React Navigation更加灵活,适用于大多数应用,包括那些具有复杂导航结构的应用。
  • React Native Navigation更加稳定,特别适合需要高性能和流畅体验的应用。

是否存在某些技术限制需要使用其中一种而非另一种?目前没有明确答案,选择哪一种取决于你的具体需求以及团队的偏好。

这两者哪一个被广泛使用?目前React Navigation被广泛采用,因为它更加灵活且易于扩展。


值得一看的官方文档:https://reactnative.dev/docs/navigation.html - Divyanshu Maithani
3个回答

96

最新修改:截至今天(07/2020),我建议使用React Navigation v5。这是Facebook社区推荐的解决方案。V5重写是一个完全的改变游戏规则,比以前的版本要好得多。很容易设置和实现简单/复杂堆栈。

如果你不喜欢这个选择,另一个选择是WIX的React Native Navigation(不幸的是不与Expo兼容)。


React Native Navigation如其名所示,使用JS桥接本地模块,因此性能可能更好。这需要本地集成。

React Navigation是react native本身提供的一个简单而强大的解决方案。它是一个纯JS实现,不像其他工具使用本地支持可能会有些棘手。只需npm-install就可以了...

如果你喜欢全JS实现,那么使用React Navigation;如果你最关注的是性能,那么使用原生导航。

  • 这两个库都经历了巨大的变革并进入了下一个稳定版本。react-navigation现在更加稳定和高效。如果你需要在JS中处理复杂的计算,请使用react-native-navigation。但在大多数情况下,react-navigation将适用于您!
  • 随着react-native-screens的出现,通过引入本地导航组件(iOS的UIViewController和Android的FragmentActivity)来实现对react-navigation的本地屏幕优化。点击这里

对于那些从用户体验角度来看的人来说,两者提供的动画和流程几乎相同,以至于你不知道在幕后使用了哪个库。两者主要区别在于本地端能够提高性能(这对于更好的用户体验至关重要)已被划掉。

这两个库都是React Native最好的导航解决方案之一。根据您的需求/喜好使用它。


16
考虑到React Navigation今天仍处于“beta”版本且存在许多烦人的错误,请考虑稳定性。就我而言,我对React Navigation感到非常失望,我将尝试使用React Native Navigation。是的,这是浪费时间......如果Facebook在放弃Navigator之前给我们一点时间就好了。 - MacKentoch
6
React Native Navigation 真的很棒。相较而言,React Navigation 缺少非常关键的生命周期方法,如 isFocused 或 onLeave。 - Jeungmin Oh
1
答案并没有提供任何关于用户体验是否存在相关差异的线索。更好的性能并不意味着用户可以感知到差异,因此我仍然不确定这些选项之间是否存在任何真正的用户差异,这就是我想知道的。 - jacmkno
1
@optim1st 错了!你可以在最新版本中使用redux。确保你遵循说明示例存储库:https://github.com/victorkvarghese/react-native-boilerplate - Victor
2
看评论就像(o.O),然后看评论日期就像(^.^)。 - Zeeshan Ahmad Khalil
显示剩余2条评论

3
使用本地控制器包装每个屏幕,通过本地导航实现React Native导航。因此,性能得到了本地领域的优化。您需要实现的区域位于标题和选项卡栏内。
React Navigation是纯js实现。它使用React-native根视图作为容器视图。每个屏幕都在根视图层次结构树下。
因此,如果您从视图层次结构控制台打开应用程序,则会看到一个很大的差异(React Navigation包括一堆奇怪的组件,如多个标题或选项卡栏,该树也难以理解)。

2
你应该试一下导航路由器。它提供了最佳的两个世界:在iOS和Android上100%本地的导航以及本地屏幕栈的JavaScript数组表示。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接