React Native(简称 RN)是 Facebook 于 2015 年 4 月开源的移动跨平台开发框架,是 Facebook 在早先开源的 React 前端框架在原生移动平台的衍生产物,目前支持 iOS 和 Android 两大原生移动平台。
目前,经过数百名贡献者数月的努力,React Native 迎来了 0.60 版本的发布。此版本完成了 Android 和 iOS 平台的一些重大迁移,许多问题也得到解决。
可访问性
可访问性 API 有许多改进,例如 announceForAccessibility,以及对角色、动作支持、标志等的改进。可访问性是一门复杂的科学,但我们希望这些改进更靠近 A11Y。可以查看 React Native Open Source Update June 2019,了解有关这些更改的更多详细信息。
启动页面
此次版本,React Native 的启动页面也已经更新!这个新的启动页面将以更加友好、引人入胜的方式欢迎用户进入 React Native 生态系统,效果如下图所示。
支持 AndroidX
AndroidX 是 Android 生态系统向前迈出的重要一步,旧的支持库已被弃用。React Native 0.60 已迁移到了 AndroidX。这是一个破坏性变更,您的 native 代码和依赖库也需要迁移。
虽然需要迁移自己的 native 代码,但 jetifier
工具可以用于来修补 node_modules。库维护人员需要升级,但这个工具提供了一个临时解决方案,让维护人员有时间来发布 AndroidX 版本。因此,如果您发现与 AndroidX 迁移相关的错误,请试一试这个工具。
CocoaPods
CocoaPods 现在是 React Native 的 iOS 工程的一部分,说明参考。请确保从现在开始使用 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 的 native module 链接进行了重大改进!大多数场景不再需要使用 react-native link
。与此同时,该团队对整个链接过程进行了彻底改革。确保使用 react-native unlink
来取消预先存在的依赖关系,如上面的文档中所述。
Upgrade Helper
@lucasbento,@pvinis,@kelset 和 @watadarkstar 构建了一个名为 Upgrade Helper 的强大工具,使升级过程更加简单。它可以帮助 React Native 用户使用 brownfield app 或复杂的自定义设置来查看版本之间的变化,详情请查看更新的升级文档。
参考资料:https://github.com/react-nati…