React-Native 开发阵营React Native实践

【0.48】React Native 中文更新日志

2017-09-30  本文已影响655人  Marno
  • 本文为 Marno 原创,转载必须保留出处!
  • 公众号【 aMarno 】,关注后回复 RN 加入交流群
  • React Native 优秀开源项目大全:http://www.marno.cn

一、导读


翻译更新文档真是一件特别枯燥无聊的事情,还会占用大量的业余时间,但是为了翻译的尽量准确,我会详细查看每一个更新的内容,然后结合修改的代码和更新说明再进行翻译。尽管如此有时候还是可能出现翻译的不太准确的地方,希望大家可以谅解。如果发现有翻译不准确的地方,可以通过留言或者关注我的公众号联系我进行修改。

这次更新对 iOS 的变动要大一些,新增了一个组件<MaskedViewIOS>,还在
Guides (IOS) 中添加了 App Extensions 相关的内容,具体使用可以到官网看下。还有就是大量重构了 TextInput 相关的代码,合并了很多属性,除此之外还为适配 iOS11 做了一些改动,具体可以看详细的更新日志。

二、通用


2.1 重大变化

之前如果 RCTDeviceEventEmitter 中出现错误,会通过 console.warn() 方式来提醒,现在如果发生错误,会直接通过 throw new Error() 方式抛出错误。

官方解释是为了集中精力提供更多高质量的组件,会逐渐移除那些不属于该范畴内的一些 API 和 Component。但是如果你的项目中用到了该组件,可以继续从 react-native-deprecated-modules 中引用该组件(以往移除的一些组件也都可以在这里找到),或者使用后面推荐的这个库来代替: https://github.com/ptomasroos/react-native-idfa/

2.2 修复 Bug

之前在解决 SwipeableRow.js 与 react-navigation 的手势冲突时,导致了一个黄盒警告,现在已经解决了。记得之前有提到过 SwipeableRow 这个组件,是一个实验性组件,想了解的可以翻下 0.47 的更新日志

之前版本的示例代码让人以为 title 是 section 的必须字段,但实际上不是,所以在文档的示例代码中删除了
title 字段。

2.3 新特性

之前的版本更新中就已经将 React.createClass 移除了,所以大家有用到 React.createClass 的,或者下载的三方库中有用到的,记得去替换下。

  1. 在水平的 ListView 中 header 和 footer 是如何渲染的(header在左,footer 在右)
  2. 添加如何使用 cloneWithRowsAndSections 的示例代码
  3. 为 getRowCount() 和 getRowAndSectionCount() 方法添加说明

之前的文档没有误让人以为 pagingEnabled 在双平台都支持横向、竖向模式,但其实在 Android 上不支持竖向模式。

三、Android


修复 Bug

新特性

1.添加了 ReadableArray 转换成 ArrayList 的方法
2.添加了 List 转换成 WritableArray 的方法
3.修改了 toBundle 方法,使其支持 arrays
4.修改了 fromBundle 方法,使其支持 lists

在该文档中所说的 ToastAndroid 并非 API 中提供的那个,而只是为了演示 Android 原生 Toast 如何使用而创建的名字,所以为了避免混淆,干脆将其改名为 ToastExample。

在某些情况下,设备是竖屏的,但是获取到的 window 的尺寸却是横屏的尺寸,这是因为当设备方向发生变化时,尺寸更新事件从 ReactRootView 获取到了错误的尺寸。现在将 window 尺寸和 screen 尺寸拆分开,就不会发生这样的情况了。

四、iOS


修复 Bug

新特性

在 Android 已经早就支持继承来扩展功能,但是 iOS 还没有,所以之前想要自定义 ViewManager ,只能自定义一个,然后复制之前的代码,再把自己扩展的代码加上。

<Image>组件加载图片时,可以在 onLoad 回调方法中获取图片的大小,但是这一方法在 iOS 上经常不能正确的回掉真实的图片尺寸,现在对这一回调进行了优化。

这里主要是对定位权限的一些修改,以适应 iOS11 的体验

主要包括 blurOnSubmit、clearsOnBeginEditing、clearTextOnFocus

之前当 ScrollView 在竖屏状态下滚动到最后一项时,将设备旋转至横屏,ScrollView 并不会停留再最后一项,这个 PR 就修复了这个问题

推荐阅读

  1. 【0.47】React Native 中文更新日志
  2. 【0.46】React Native 中文更新日志
  3. 如何高效管理 React Native 项目中的图片资源

上一篇 下一篇

猜你喜欢

热点阅读