React Native 0.60 新特性

8,178 阅读3分钟

原文链接

经过数百名贡献者数月的努力,React Native 迎来了 0.60 版本的发布。此版本完成了 Android 和 iOS 平台的一些重大迁移,许多问题也得到解决。这篇文章主要介绍了该版本的一些亮点。

专注于可访问性

可访问性 API 有许多改进,例如 announceForAccessibility,以及对角色、动作支持、标志等的改进。可访问性是一门复杂的科学,但我们希望这些改进更靠近 A11Y[1]。可以查看 React Native Open Source Update June 2019[2],了解有关这些更改的更多详细信息。

新的启动页面

React Native 的启动屏幕已更新了!这个新的启动页面将以更加友好、引人入胜的方式欢迎用户进入 React Native 生态系统。

支持AndroidX

AndroidX 是 Android 生态系统向前迈出的重要一步,旧的支持库已被弃用。React Native 0.60 已迁移到了 AndroidX。这是一个破坏性变更,您的 native 代码和依赖库也需要迁移。

虽然需要迁移自己的 native 代码,但 jetifier 工具可以用于来修补 node_modules。库维护人员需要升级,但这个工具提供了一个临时解决方案,让维护人员有时间来发布 AndroidX 版本。因此,如果您发现与 AndroidX 迁移相关的错误,请试一试这个工具。

默认使用 CocoaPods

CocoaPods 现在是 React Native 的 iOS 工程的一部分[3]。请确保从现在开始使用 xcworkspace 文件打开iOS平台代码(提示:在根项目目录中尝试 xed ios)。 此外,内部软件包的 podspecs 已更改,使其与 Xcode 项目兼容,这将有助于故障排除和调试。作为升级到 0.60 的一部分,期望对您的 Podfile 进行一些直接的更改,以引入这个令人兴奋的支持选项。请注意,我们了解 use_frameworks!的兼容性问题,我们正在考虑变通方法和未来补丁的问题。

移除 Lean Core

WebView 和 NetInfo 以前被提取到单独的 repo 中,在 0.60 中我们已经完成了将它们从 React Native 的 repo 中迁移出来。此外,为响应社区对新 App Store 策略的反馈,Geolocation 也被抽取出来。如果还没有这样做,请通过向 react-native-webview@react-native-community/netinfo@react-native-community/geolocation 添加依赖项来完成迁移。如果您想要自动化解决方案,请考虑使用 rn-upgrade-deprecated-modules

Native Modules 现在已自动链接

React Native CLI 的团队已经对称为 autolinking[4] 的 native module 链接进行了重大改进!大多数场景不再需要使用 react-native link。与此同时,该团队对整个链接过程进行了彻底改革。确保使用 react-native unlink 来取消预先存在的依赖关系,如上面的文档中所述。

Upgrade Helper

@lucasbento,@pvinis,@kelset和 @watadarkstar 构建了一个名为 Upgrade Helper 的强大工具,使升级过程更加简单。它可以帮助 React Native 用户使用 brownfield app 或复杂的自定义设置来查看版本之间的变化。详情请查看更新的升级文档[5]

库维护者须知

AndroidX 的更改几乎肯定需要更新您的库,因此请务必尽快加入支持。如果您还无法升级,请考虑使用 jetifier 检查您的库,以确认用户能够在构建时修补您的库。

查看 autolinking 文档以更新您的配置和自述文件。根据您之前集成的库的方式,您可能还需要进行一些其他更改。检查 CLI 中的依赖关系指南,以获取有关如何定义依赖关系接口的信息。

小结

虽然这些是我们注意到的亮点,但还有许多其他令人兴奋的事情。要查看所有更新,请查看更改日志[6]

参考

关注我们

欢迎关注我们的公众号:知识小集(ID: zsxjtip),也欢迎加入我们的群组讨论问题。可以加微信 coldlight_hh/wsy9871 进入我们的 iOS/flutter 微信群。