歡迎光臨
每天分享高質量文章

React Native 0.60 新特性一覽

來自公眾號:知識小集

作者:Ryan Turner 

經過數百名貢獻者數月的努力,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]

參考

[1]https://a11yproject.com/
[2]https://facebook.github.io/react-native/blog/2019/06/12/react-native-open-source-update#meaningful-community-contributions
[3]https://github.com/react-native-community/discussions-and-proposals/blob/master/proposals/0004-cocoapods-support-improvements.md
[4]https://github.com/react-native-community/cli/blob/master/docs/autolinking.md
[5]https://facebook.github.io/react-native/docs/upgrading
[6]https://github.com/react-native-community/react-native-releases/blob/master/CHANGELOG.md

已同步到看一看
赞(0)

分享創造快樂