发布 React Native 0.59
欢迎来到 React Native 0.59 版本!这是一个重要的版本,包含了 88 位贡献者提交的 644 次提交。贡献也以其他形式存在,因此**感谢**您维护问题、促进社区发展以及向人们介绍 React Native。本月带来了一些备受期待的更改,我们希望您喜欢它们。
🎣 Hooks 来了
React Hooks 是此版本的一部分,它允许您在组件之间重用有状态逻辑。关于 hooks 有很多讨论,但如果您还没有听说过,请查看下面的一些精彩资源
- Hooks 简介解释了我们为什么要在 React 中添加 Hooks。
- Hooks 概述是内置 Hooks 的快速概览。
- 构建自己的 Hooks演示了自定义 Hooks 的代码重用。
- 理解 React Hooks探索了 Hooks 开启的新可能性。
- useHooks.com展示了社区维护的 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 识别需要延迟加载的组件。具有深层和多样化组件架构的应用程序将看到最大的改进。
我们需要社区告诉我们它如何工作,然后我们才能默认启用它。当您升级到 0.59 时,将会有一个新的 metro.config.js
文件;将选项设置为 true 并给我们您的反馈!在性能文档中阅读更多关于内联 require 的信息,以基准测试您的应用程序。
🚅 精益核心正在进行中
React Native 是一个庞大而复杂的项目,拥有一个复杂的仓库。这使得代码库对贡献者来说不那么容易上手,难以测试,并且作为开发依赖项而言过于臃肿。瘦核心是我们通过将代码迁移到独立的库以更好地管理来解决这些问题的努力。过去的几个版本已经迈出了第一步,但是让我们认真起来。
您可能会注意到,现在有更多的组件已正式弃用。这是个好消息,因为这些功能现在都有所有者,并积极维护它们。请注意警告消息并迁移到这些功能的新库,因为它们将在未来版本中删除。下表列出了组件、其状态以及您可以将您的使用迁移到何处。
组件 | 已弃用? | 新家 |
---|---|---|
AsyncStorage | 0.59 | @react-native-community/react-native-async-storage |
ImageStore | 0.59 | expo-file-system 或 react-native-fs |
MaskedViewIOS | 0.59 | @react-native-community/react-native-masked-view |
NetInfo | 0.59 | @react-native-community/react-native-netinfo |
Slider | 0.59 | @react-native-community/react-native-slider |
ViewPagerAndroid | 0.59 | @react-native-community/react-native-viewpager |
在接下来的几个月里,将会有更多组件遵循这条路径,走向更精简的核心。我们正在为此寻求帮助 — 请前往瘦核心伞状问题提供帮助。
👩🏽💻 CLI 改进
React Native 的命令行工具是开发者进入生态系统的入口,但它们长期存在问题,并且缺乏官方支持。CLI 工具已移至新仓库,并且一组专门的维护者已经取得了一些令人兴奋的改进。
现在日志格式化得更好了。命令现在几乎立即运行——您会立即注意到差异
🚀 升级到 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 工作原理并为更大的利益做出贡献的好方法。谢谢你们!未来请留意类似的问题。
虽然这些是我们注意到的亮点,但还有许多其他值得兴奋的地方。要查看所有更新,请查看更新日志。0.59 是一个巨大的版本——我们迫不及待地想让您尝试一下。
今年剩下的时间里,我们还将带来更多改进。敬请期待!