[0.57]
欢迎来到React Native版本的0.57版!这个版本解决了许多问题,并有一些令人兴奋的改进。我们再次跳过了一个月发布,通过扩展发布候选阶段关注质量,并且兼容之前的版本
这个版本包括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 the Babel 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 the React 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开始(通过此提交); 它已被弃用(via this 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, and f39d092 by @ziqichen6)
- 添加YogaNodeProperties实现基于ByteBuffer (0c97e75 and 23657cc 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 and bbdc12eby @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, and e0df3a1 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, and 0b30129 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, and 9f83fcc 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 and aaf797a 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 and 5992f8d by @dulmandakh)
- 升级 Android gradle plugin 到 3.1.4, Gradle wrapper 到 4.4 (6eac2d4 and 33d20da 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)
Fixed: bugs that have been resolved
- 修复了Windows机器上的构建 (3ac86c3 by @rafeca)
- 修复构建 tvOS (1f1ddd0)
- 修复
TextInputState
的currentlyFocusedField()
(b4b594c by @janicduplessis) - 修复
<VirtualizedList>
设置initialScrollIndex
时的跳跃问题 (e0c7363 by @rbrosboel) - 修复 local-cli assetRegistryPath 和 middlewares (f05943d by @janicduplessis)
- Fix 当
flexGrow
andflexShrink
设置为0的问题 (90a408e by @priteshrnandgaonkar) - 修复 react-native CLI's 调试UI时的路径 和 metro 主机/端口使用 (5067540 by @Kureev)
- 修复react-native-windows在hasteImpl中接受路径出错 (5494274 by @rubennorte)
- 修复
Animated
中一些类型错误的问题 (db2159d by @yunyu) - 修复了DockerTests.md中的拼写错误 (c1831d5 by @kant)
- 修复在jest预处理器中无效使用解构 (9d5bd50 by @umairda)
- 修复了使用旧版本节点时CLI崩溃的问题 (9a4c21f by @keksipurkki)
Android specific fixes
- 修复AsyncStorage在Android 7+上运行不正常的问题 (1b09bd7)
- 修复终端使用缓慢 (5017b86 by @gnprice)
- 修复
<TextInput>
占位符不可见 (8402232 and 86f24cc by @jainkuniya) - 在使用RTL内容更改布局期间修复水平的滚动位置 (de57327)
- 修复水平问题 (d5465a9)
- 修复ReactTextInputLocalData在SDK15上的奔溃 (1bb2bea)
- 修复ReactScrollView的绘图Rect (6a16bec by @yungsters)
- 修复了从ReadableNativeMap抛出的NoSuchKeyException,如果密钥不存在则通过默认为0来释放ReadableMap (1a6666a by @Bhavik-P)
- 修复了runAndroid,以便在Windows8081端口运行包 (3cd0737 by @ihenshaw)
- 尝试在不同质量的网络上获取数据时,不要在上传重试时崩溃 (7a246e4 by @dryganets)
iOS specific fixes
- 修复TextInput.clear()和TextInput.setNativeProps({text: ''})的使用 (057d3ef by @magicien) -在RCTReconnectingWebSocket导入 Correct fishhook (75a0273)
- 如果高度/宽度为零,则更改RCTImagePickerManager以处理崩溃 (82af7c9 by @abhi06276)
- 输入中文/日文时修复受iOS 限制 (892212b by @mmmulani)
- 修复的错误 (fab5fff by @PeteTheHeat)
- 修复了缺失的选择指示线 (e592d6f by @VSchlattinger)
- 修复iOS上的RCTImagePicker崩溃 (934c50f by @mmmulani)
- 修复undefined_arch在Xcode 10 beta中构建时的错误 (e131fff by @futuun)
- 使用自定义调试配置时,在设备上运行iOS应用程序时添加对连接到Packager的支持 (079bf3f)
- 修复RCTAnimation导入以与cocoapods集成 (7525f38 by @LukeDurrant)
Removed: features that have been removed; these are breaking
Android specific removals
关注小编 公众号:LearningTech 每日更新前端技术