跳至主要内容

宣布发布 React Native 0.61,包含快速刷新功能

·阅读 3 分钟
Dan Abramov
Facebook 的 React 核心团队

我们很高兴地宣布 React Native 0.61 发布,其中包含一种名为“快速刷新”的新重载体验。

快速刷新

当我们询问 React Native 社区关于 常见痛点 时,其中一个最常见的答案是“热重载”功能存在问题。它在函数组件中不可靠,经常无法更新屏幕,并且对拼写错误和错误没有足够的容错性。我们了解到大多数人将其关闭,因为它太不可靠了。

在 React Native 0.61 中,**我们将现有的“实时重载”(保存时重载)和“热重载”功能统一到一个名为“快速刷新”的新功能中**。快速刷新是根据以下原则从头开始实现的

  • 快速刷新**完全支持现代 React**,包括函数组件和 Hooks。
  • 快速刷新**能够优雅地从拼写错误**和其他错误中恢复,并在需要时回退到完全重载。
  • 快速刷新**不会执行侵入式代码转换**,因此它足够可靠,可以默认启用。

要查看快速刷新的实际效果,请观看此视频

试一试,让我们知道您的想法!如果您愿意,可以在开发菜单中将其关闭(iOS 上按 Cmd+D,Android 上按 Cmd+M 或 Ctrl+M)。打开和关闭是即时的,因此您可以随时进行操作。

以下是一些快速刷新的提示

  • 默认情况下,快速刷新保留函数组件(以及 Hooks!)中的 React 本地状态。
  • 如果您需要在每次编辑时重置 React 状态,可以在包含该组件的文件中添加一个特殊的 // @refresh reset 注释。
  • 快速刷新始终重新挂载类组件,而不保留状态。这确保了它的可靠性。
  • 我们都会在代码中犯错误!在您保存文件后,快速刷新会自动重试渲染。您无需在修复语法或运行时错误后手动重新加载应用。
  • 在编辑期间添加 console.logdebugger 语句是一种巧妙的调试技巧。

请在 GitHub 上报告快速刷新中的任何问题,我们会调查。

其他改进

  • **修复了 use_frameworks! CocoaPods 支持。**在 0.60 中,我们进行了一些更新以默认集成 CocoaPods。不幸的是,这破坏了使用 use_frameworks! 的构建。此问题已在 0.61 中修复,从而更轻松地将 React Native 集成到需要使用动态框架进行构建的 iOS 项目中。
  • **添加 useWindowDimensions Hook。**此新 Hook 自动提供并订阅尺寸更新,在大多数情况下可以替代 Dimensions API。
  • **React 已升级到 16.9。**此版本弃用了 UNSAFE_ 生命周期方法的旧名称,包含对 act 的改进等等。请参阅 React 16.9 博客文章,了解自动迁移脚本和更多信息。

重大更改

  • **删除 React .xcodeproj。**在 0.60 中,我们引入了通过 CocoaPods 的自动链接支持。我们还将 CocoaPods 集成到端到端测试运行中,以便从现在开始,我们有一种统一的标准方法将 RN 集成到 iOS 应用中。这实际上弃用了 React .xcodeproj 支持,并且该文件已从 0.61 开始删除。注意:如果您已经使用 0.60 自动链接,则不应受到影响。

致谢

感谢所有帮助使 0.61 成为可能的贡献者!

要查看所有更新,请查看 0.61 变更日志