跳到主要內容

發佈 React Native 0.59

·6 分鐘閱讀
Ryan Turner
核心維護者與 React Native 開發人員

歡迎使用 React Native 0.59 版本!這是另一個大型版本,包含 88 位貢獻者提交的 644 次 commit。貢獻也以其他形式出現,因此感謝您維護問題、促進社群發展,以及教導人們關於 React Native 的知識。本月帶來了許多備受期待的變更,我們希望您會喜歡。

🎣 Hooks 登場

React Hooks 是此版本的一部分,可讓您跨組件重複使用具狀態邏輯。關於 Hooks 有很多討論,但如果您還沒聽說過,請看看以下一些精彩的資源

務必在您的應用程式中試用看看。我們希望您會發現重複使用和我們一樣令人興奮。

📱 更新的 JSC 代表效能提升和 Android 上的 64 位元支援

React Native 使用 JSC (JavaScriptCore) 為您的應用程式提供動力。Android 上的 JSC 已有幾年歷史,這表示許多現代 JavaScript 功能不受支援。更糟的是,與 iOS 現代的 JSC 相比,其效能表現不佳。在此版本中,一切都改變了。

感謝 @DanielZlotin@dulmandakh@gengjiawen@kmagiera@kudo 的出色工作,JSC 已趕上過去幾年的進度。這帶來了 64 位元支援、現代 JavaScript 支援和大幅效能提升。感謝您讓這成為一個可維護的流程,以便我們能夠利用未來 WebKit 的改進,而無需進行如此多的繁瑣工作,並感謝 Software Mansion 和 Expo 使這項工作成為可能。

💨 使用內聯 require 更快啟動應用程式

我們希望協助人們預設擁有高效能的 React Native 應用程式,並且正在努力將 Facebook 的最佳化功能帶給社群。應用程式會根據需要載入資源,而不是減慢啟動速度。此功能稱為「內聯 require」,因為它讓 Metro 能夠識別要延遲載入的組件。具有深度和多樣化組件架構的應用程式將看到最大的改進。

source of the metro.config.js file in the 0.59 template, demonstrating where to enable inlineRequires

我們需要社群告知我們它的運作方式,然後我們才能預設開啟它。當您升級到 0.59 時,將會有一個新的 metro.config.js 檔案;將選項切換為 true,並向我們提供您的意見反應!請參閱效能文件中關於內聯 require 的更多資訊,以基準化您的應用程式。

🚅 Lean core 正在進行中

React Native 是一個龐大而複雜的專案,具有複雜的儲存庫。這使得程式碼庫對貢獻者來說較不易接近、難以測試,並且作為開發依賴項而言顯得臃腫。Lean Core 是我們為了解決這些問題所做的努力,方法是將程式碼遷移到個別程式庫以進行更好的管理。過去幾個版本已經看到了這方面的初步進展,但讓我們認真看待

您可能會注意到,其他組件現在已正式棄用。這是個好消息,因為現在有這些功能的擁有者積極維護它們。請注意警告訊息,並將這些功能遷移到新的程式庫,因為它們將在未來的版本中移除。下表指出組件、其狀態以及您可以將使用方式遷移到何處。

組件已棄用?新家
AsyncStorage0.59@react-native-community/react-native-async-storage
ImageStore0.59expo-file-systemreact-native-fs
MaskedViewIOS0.59@react-native-community/react-native-masked-view
NetInfo0.59@react-native-community/react-native-netinfo
Slider0.59@react-native-community/react-native-slider
ViewPagerAndroid0.59@react-native-community/react-native-viewpager

在未來幾個月內,將有更多組件遵循此途徑,走向更精簡的核心。我們正在尋求協助 - 前往lean core umbrella 來貢獻一份心力。

👩🏽‍💻 CLI 改善

React Native 的命令列工具是開發人員進入生態系統的入口點,但它們長期存在問題且缺乏官方支援。CLI 工具已移至新的儲存庫,並且專門的維護人員群組已經做出了一些令人興奮的改進。

記錄現在格式化得更好。命令現在幾乎立即執行 - 您會立即注意到差異

0.58's CLI is slow to start0.58's CLI is nearly instantaneous

🚀 升級到 0.59

我們聽到了您關於React Native 升級流程的意見反應,並且我們正在採取步驟來改善未來版本的體驗。若要升級到 0.59,我們建議使用 rn-diff-purge 來判斷您目前的 React Native 版本和 0.59 之間有哪些變更,然後手動套用這些變更。一旦您將專案升級到 0.59,您將能夠使用新改進的 react-native upgrade 命令(基於 rn-diff-purge!)升級到 0.60 及更高版本,因為較新的版本將會推出。

🔨 重大變更

0.59 中的 Android 支援已根據 Google 的最新建議進行清理,這可能會導致現有應用程式的潛在損壞。此問題可能會呈現為執行階段崩潰和訊息「您需要將 Theme.AppCompat 主題(或後代)與此活動搭配使用」。我們建議更新專案的 AndroidManifest.xml 檔案,確保 android:theme 值是 AppCompat 主題(例如 @style/Theme.AppCompat.Light.NoActionBar)。

react-native-git-upgrade 命令已在 0.59 中移除,改為使用新改進的 react-native upgrade 命令。

🤗 感謝

許多新的貢獻者協助從 flow 類型啟用原生程式碼產生解決 Xcode 警告 - 這些都是學習 React Native 如何運作以及為更大利益做出貢獻的好方法。謝謝!請注意未來類似的問題。

雖然這些是我們注意到的重點,但還有許多其他值得期待的地方。若要查看所有更新,請查看變更記錄。0.59 是一個大型版本 – 我們迫不及待想讓您試用看看。

我們在今年剩餘的時間裡還有更多改進即將推出。敬請期待!

Ryan 和整個 React Native 核心團隊