宣布 React Native 0.61,带来快速刷新功能
·阅读时长 3 分钟
我们很高兴地宣布 React Native 0.61 发布,其中包含我们称之为“快速刷新”(Fast Refresh)的全新重载体验。
快速刷新
当我们向 React Native 社区询问常见痛点时,最主要的答案之一是“热重载”功能已损坏。它无法可靠地用于函数组件,经常无法更新屏幕,并且对拼写错误和失误不具备弹性。我们听说大多数人因为其不可靠而将其关闭。
在 React Native 0.61 中,我们将现有的“实时重载”(保存时重载)和“热重载”功能统一为一个新的功能,名为“快速刷新”(Fast Refresh)。快速刷新是从头开始实现的,遵循以下原则:
- 快速刷新完全支持现代 React,包括函数组件和 Hooks。
- 快速刷新在拼写错误和其他失误后可优雅地恢复,并在必要时回退到完全重载。
- 快速刷新不执行侵入性代码转换,因此默认情况下它足够可靠。
要查看快速刷新的实际效果,请观看此视频
试试看,并告诉我们您的想法!如果您愿意,可以在开发菜单中将其关闭(iOS 上按 Cmd+D,Android 上按 Cmd+M 或 Ctrl+M)。开启和关闭它是即时的,因此您可以随时操作。
以下是一些快速刷新技巧
- 默认情况下,快速刷新会保留函数组件(和 Hooks!)中的 React 局部状态。
- 如果您需要在每次编辑时重置 React 状态,您可以在包含该组件的文件中添加特殊的
// @refresh reset
注释。 - 快速刷新总是重新挂载类组件而不保留状态。这确保了其工作的可靠性。
- 我们都会犯代码错误!快速刷新会在您保存文件后自动重试渲染。您无需在修复语法或运行时错误后手动重新加载应用。
- 在编辑时添加
console.log
或debugger
语句是一种很棒的调试技术。
如果快速刷新有任何问题,请在 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 更新日志。