跳到主要内容

发布 React Native 0.59

·6 分钟阅读
Ryan Turner
核心维护者 & React Native 开发者

欢迎来到 React Native 0.59 版本!这是又一个重大版本,包含 88 位贡献者的 644 次提交。贡献也以其他形式出现,因此感谢您维护问题、培育社区以及向人们传授有关 React Native 的知识。本月带来了一些备受期待的更改,我们希望您喜欢它们。

🎣 Hooks 已到来

React Hooks 是此版本的一部分,它使您可以在组件之间重用有状态逻辑。关于 hooks 有很多讨论,但是如果您还没有听说过,请查看以下一些精彩的资源

请务必在您的应用程序中尝试一下。我们希望您发现这种重用像我们一样令人兴奋。

📱 更新的 JSC 意味着性能提升和 Android 上的 64 位支持

React Native 使用 JSC (JavaScriptCore) 来驱动您的应用程序。Android 上的 JSC 已经有几年历史了,这意味着很多现代 JavaScript 功能都不受支持。更糟糕的是,与 iOS 的现代 JSC 相比,它的性能很差。在此版本中,这一切都改变了。

感谢 @DanielZlotin@dulmandakh@gengjiawen@kmagiera@kudo 的一些出色工作,JSC 已经赶上了过去几年的发展。这带来了 64 位支持、现代 JavaScript 支持以及 巨大的性能改进。感谢他们使这成为一个可维护的过程,以便我们能够利用未来 WebKit 的改进,而无需进行如此多的准备工作,并感谢 Software Mansion 和 Expo 使这项工作成为可能。

💨 使用内联 require 更快地启动应用程序

我们希望帮助人们默认拥有高性能的 React Native 应用程序,并且正在努力将 Facebook 的优化引入社区。应用程序根据需要加载资源,而不是减慢启动速度。此功能称为“内联 require”,因为它使 Metro 能够识别要延迟加载的组件。具有深度和多样化组件架构的应用程序将看到最大的改进。

source of the metro.config.js file in the 0.59 template, demonstrating where to enable inlineRequires

我们需要社区告知我们它的工作原理,然后才能默认启用它。当您升级到 0.59 时,将有一个新的 metro.config.js 文件;将选项翻转为 true,并给我们 您的反馈!阅读有关内联 require 的更多信息 在性能文档中以基准测试您的应用程序。

🚅 Lean core 正在进行中

React Native 是一个庞大而复杂的项目,具有复杂的存储库。这使得代码库对贡献者来说不太容易接近,难以测试,并且作为开发依赖项而言过于臃肿。Lean Core是我们通过将代码迁移到单独的库以进行更好管理来解决这些问题的努力。过去的几个版本已经看到了这方面的初步步骤,但是 让我们认真起来

您可能会注意到其他组件现在已正式弃用。这是一个好消息,因为现在这些功能有所有者积极维护它们。请注意警告消息,并将这些功能迁移到新的库,因为它们将在未来的版本中删除。下表指示了组件、其状态以及您可以将用途迁移到何处。

组件已弃用?新家
AsyncStorage0.59@react-native-community/react-native-async-storage
ImageStore0.59expo-file-systemreact-native-fs
MaskedViewIOS0.59@react-native-community/react-native-masked-view
NetInfo0.59@react-native-community/react-native-netinfo
Slider0.59@react-native-community/react-native-slider
ViewPagerAndroid0.59@react-native-community/react-native-viewpager

在接下来的几个月中,将有更多组件遵循这条路径走向更精简的核心。我们正在寻求帮助 - 前往 lean core umbrella 参与进来。

👩🏽‍💻 CLI 改进

React Native 的命令行工具是开发人员进入生态系统的入口点,但是它们长期存在问题并且缺乏官方支持。CLI 工具已移至 新的存储库,并且 专门的维护人员小组已经进行了一些令人兴奋的改进。

日志现在的格式更好。命令现在几乎立即运行 - 您会立即注意到差异

0.58's CLI is slow to start0.58's CLI is nearly instantaneous

🚀 升级到 0.59

我们听到了您关于 React Native 升级过程的反馈,并且我们正在采取措施以改进 未来版本的体验。要升级到 0.59,我们建议使用 rn-diff-purge 来确定您当前的 React Native 版本和 0.59 之间发生了哪些更改,然后手动应用这些更改。一旦您将项目升级到 0.59,您将能够使用新改进的 react-native upgrade 命令(基于 rn-diff-purge!)升级到 0.60 及更高版本,随着新版本的发布。

🔨 破坏性更改

0.59 中的 Android 支持已按照 Google 的最新建议进行了清理,这可能会导致现有应用程序的潜在破坏。此问题可能会表现为运行时崩溃和消息“您需要将 Theme.AppCompat 主题(或后代)与此活动一起使用”。我们建议更新项目的 AndroidManifest.xml 文件,确保 android:theme 值是 AppCompat 主题(例如 @style/Theme.AppCompat.Light.NoActionBar)。

react-native-git-upgrade 命令已在 0.59 中删除,取而代之的是新改进的 react-native upgrade 命令。

🤗 感谢

许多新的贡献者帮助 从 flow 类型启用本机代码的生成解决 Xcode 警告 - 这些是学习 React Native 如何工作并为更大利益做出贡献的好方法。谢谢!请注意将来类似的 issue。

虽然这些是我们指出的亮点,但还有许多其他令人兴奋的内容。要查看所有更新,请查看 更新日志。0.59 是一个巨大的版本 - 我们迫不及待地想让您试用它。

我们在今年余下的时间里还会有更多改进。敬请关注!

Ryan 和整个 React Native 核心团队