react-native 0.57 版本更新日誌
歡迎來到React Native版本的0.57版!這個版本解決了許多問題,並有一些令人興奮的改進。我們再次跳過了一個月釋出,通過擴充套件釋出候選階段關注質量,並且相容之前的版本
這個版本包括ofollow,noindex">599提交由73個不同的貢獻者 !為了響應反饋,我們準備了一個只包含使用者影響的更改的變更日誌。請分享您的意見,並讓我們知道我們如何使這更有用,如果您對此有任何反饋,和往常一樣請告知我們let us know
Highlights
New features
- 輔助功能API現在支援可訪問性提示,反色,以及更容易用於定義元素的角色和狀態@ziqichen6's excellent blog post
- 在iOS上,WKWebView現在可以在WebView元件中使用@rsnara's awesome blog post
- 更好地支援其他平臺。有關詳細資訊the discussion
Tooling updates
- Android構建工具已經升級,需要(SDK 27, gradle 4.4, and support library 27);由於Android編譯工具暫時不支援3.2,所以請暫時停留在3.1版本
- 支援 Babel 7 請閱讀here about using TypeScript and check out theBabel 7 migration guide for help migrating.
- Metro已經升級(with Babel 7 and better transformer support),並在接下來的主要版本中,我們計劃有兩個新功能(ram bundles and inline requires)可供大家選擇; 此外,如果您有自定義打包程式配置,我們建議您還閱讀。here ; moreover, if you have a custom packager config, we recommend you read also the "updating to this version" section.
- Flow,React和相關包也已更新,它包括working support for theReact Profiler.
The Slimmening is happening
正如過去幾次提到的那樣,核心團隊正在審查儲存庫以將其更改為React Native的基本功能,以便使整個生態系統更易於維護(通過使用dividi-et-impera方法,社群將更快地移動並使拉取請求更快地被審查和合並)。此更改需要將一些元件提取到他們自己的單獨儲存庫中並刪除舊的,未使用的程式碼(此處的詳細資訊)。 (details here ).
任何更改都不會直接影響0.57 ,但我們希望您知道:
- WebView將在react-native-community / react-native-webview它自己的repo上移除。WebView很快就會棄用react-native-community/react-native-webview
- NavigatorIOS將從主程式碼庫中完全刪除,從0.58.0開始(通過此提交); 它已被棄用(viathis commit ); it is now deprecated
Updating to this version
-
升級React Native版本到
0.57.0
, 同時 React 版本到16.5
-
將babel預設依賴項從"babel-preset-react-native": "^5",更改為"metro-react-native-babel-preset": "^0.45.0",,然後將.babelrc配置更改為
{ "presets": ["module:metro-react-native-babel-preset"] } 複製程式碼
-
確保您的babel版本時^7.0.0(您可能還需要新增babel-core": "7.0.0-bridge.0"以確保相容性)
-
如果您有自定義打包程式配置rn-cli.config.js,則可能需要更新它以使用更新的Metro配置結構(有關詳細資訊,請參閱Metro的文件); 以下是一些常見的變化rn-cli.config.js:
-const blacklist = require('metro/src/blacklist') +const blacklist = require('metro-config/src/defaults/blacklist') // ... module.exports = { +watchFolders: alternateRoots, +resolver: { +blacklistRE: blacklist +}, +transformer: { +babelTransformerPath: require.resolve('./scripts/transformer.js'), +}, -getProjectRoots() { -return [ -path.resolve(__dirname), -].concat(alternateRoots) -}, -getBlacklistRE() { -return blacklist; -}, -transformModulePath: require.resolve('./scripts/transformer.js'), } 複製程式碼
-
執行yarn命令確保安裝所有新依賴項
Added: new features
- 新增 .nvmrc 同時確保 node 版本支援ESLint 5 (30b9d81 by@slorber )
- 可訪問性有很大的改變 (9f01e4c ,b5b704d ,c36e8b3 ,40f6998 ,c1d0ccd ,679bff2 ,10b603f ,d9eeae9 ,3cfa7ae ,5acb721 ,5741f77 ,d0b86ec ,e739143 ,c27b495 ,5aa040d ,03036f7 ,3bedc78 ,ca01290 ,121e2e5 ,1bc5226 ,48b3d13 ,ef3d8b2 ,5f8b44f ,50e4001 , andf39d092 by@ziqichen6 )
- 新增YogaNodeProperties實現基於ByteBuffer (0c97e75 and23657cc by@davidaurelio )
-
新增FlatList和SectionList動畫匯出 (daa7c78
by@yunyu
)
-為
FlatList
/VirtualizedList
新增新的樣式屬性ListHeaderComponent
和ListFooterComponent
(a2675ce ) - 向Module Registry systraces添加了更多資訊 (c7fdd27 by@axe-fb )
- 通過新haste欄位新增對其他平臺外掛的支援package.json; 在docs條目中閱讀更多內容docs entry (6bcd51a by@empyrical )
- 加入snapToOffsets到ScrollView並提出了一些修正,snapToInterval等 (ef7e99c by@olegbl )
Android specific additions
-允許註冊自定義打包程式命令處理程式 (b3ef1c3 by@fkgozali )
-
Android中實現
AccessibilityInfo.setAccessibilityFocus
(be715ec by@draperunner ) -
支援
overflow
(b81c8b5 andbbdc12e by@yungsters )
iOS specific additions
- WebView現在可以使用WKWebView,如果你在內部配置了useWebKit={true} (e90d9ca ,9b3a6ec ,f7f9d01 ,94560ca ,06cce04 ,1c3af59 ,5662598 ,1984f4b ,1b73e76 ,d0b5a38 ,0fa5bd8 ,527792a ,ee971a7 ,d29c253 ,0009d09 ,078799f ,f46dbc2 ,262d286 ,959aacf , ande0df3a1 by@rsnara )
-
在IOS中新增
accessibilityHint
(253b29d by@draperunner )
Changes: existing functionality that is now different
- *[BREAKING]*在CLI中,unbundle現在是ram-bundle (ebf5aea by@jeanlauliac )
- Bump最小節點版本為8.3 (#20236) (e64e13f by@hramos )
- 升級 React (70913a4 ,b7bb25f , and0b30129 by@acdlite ,@hramos , and@yungsters )
- 升級 Flow 到 v0.76.0 (eac34e3 by@gabelevi )
- 升級 jest 到 23.4.1 (51cf9eb by@rafeca )
- 升級 babel-eslint 到 v9.0.0-beta.2 with better support for Flow (abf1188 by@rubennorte )
- 升級 ESLint 到 5.1.0 (0f2f0ca by@rubennorte )
- 升級 Babel 到 v7.0.0 (b9d1c83 ,724c749 by Peter van der Zee, and9f83fcc by@rubennorte and@rafeca )
- Metro 目前版本為 v0.45.0 (169d683 ,bda84a3 ,5288656 ,1bfa422 ,96939ad by@CompuIves and@rafeca )
- 在非開發模式下隱藏預先捆綁的通知 (edf7100 by@yancouto )
-
定義
StyleSheet.compose
為Flow 型別 (50a481d by@yungsters ) - 捕獲JS bundle載入失敗並阻止之後呼叫JS (201ba8c by@fkgozali )
- 使用新的 Metro 配置在react-native cli (a32620d andaaf797a by@CompuIves )
-
預設在haste/cli白名單中配置
react-native-dom
(c4bcca6 by@vincentriemer ) -
在CLI中不要覆蓋
metro.config.js
配置 (3afe711 by@rozele )
Android specific changes
-
Image
沒有source時返回null (28c7ccf by@himabindugadupudi ) -
targetSdkVersion
is 26 (bfb68c0 by@dulmandakh ) - 升級 NDK 到 r17b (6117a6c by@dulmandakh )
- 升級 NDK toolchain 到 4.9 (ccdd450 by@dulmandakh )
- 升級 Android Support Library 到 version 27.1.1 同時升級 compileSdkVersion 到 27; buildToolsVersion 也會保持一致 (d9868f7 and5992f8d by@dulmandakh )
- 升級 Android gradle plugin 到 3.1.4, Gradle wrapper 到 4.4 (6eac2d4 and33d20da by@gengjiawen and@dulmandakh )
- 升級soloader 到 0.5.1 (b6f2aad by@gengjiawen )
- 升級 mockito 到 2.19.1 (3ea803a by@dulmandakh )
- 升級 glog 到 0.3.5 (b5fca80 by@dulmandakh )