导航

    论坛 - React Native中文社区

    • 登录
    • 搜索
    • 版块
    • 最新
    • 热门
    • 搜索
    1. 主页
    2. wlfcss
    W
    • 继续与 wlfcss 聊天
    • 开始与 wlfcss 的新会话
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 主题
    • 帖子
    • 最佳
    • 群组

    wlfcss

    @wlfcss

    0
    声望
    5
    帖子
    1108
    资料浏览
    0
    粉丝
    0
    关注
    注册时间 最后登录

    wlfcss 关注

    wlfcss 发布的帖子

    • [0.56] React Native 中文更新日志

      [0.56] React Native 中文更新日志

      译者注:由于个人水平有限,另外翻译changelog需要阅读大量PR,翻译可能有不准确的地方,望谅解。如果发现有翻译不准确的地方,可以留言或是于Github上提交:react-native-docsZh。

      欢迎阅读React Native的2018年6月的更新日志!自3月份以来,有超过60位贡献者提交了总计 816份 commits - 在此,向你们致以诚挚的敬意!

      正如您刚刚看到的,0.56新版本有一些重要的 突破性变化 需要大量的额外测试才能达到稳定版本。这也是时隔数月(4月和5月)才发布的主要原因,但每月发布一个新版本的计划并不会因此改变。

      要点

      React Native 现在使用 Babel 7

      升级到0.56时,请确保将您的 babel-preset-react-native package.json 依赖项提升至 ^5.0.1 或更高的版本。

      React Native 组件作者需要更新其依赖库以使用最新的Babel预设,因为Babel 7 并不向下兼容。

      如果您在升级到Babel 7时遇到问题,请仔细检查相关文档,特别是与 Package Renames 和 Scoped Packages 相关的部分。

      如果您需要使用尚未升级到Babel 7 的库,babel-bridge 组件可以助您实现暂时的兼容。当然您还可以通过 yarn resolutions 等工具强制执行Babel 7 依赖。

      Node 8 是此版本RN所需的最低版本。

      现在已允许使用尾部逗号。

      iOS 9 是此版本RN所需的最低版本

      (译者注:截止至2018.05,在所有类型的ios设备上,国内使用低于ios9系统的设备占有率应当在2%左右)

      对于用户来说,任何可以运行iOS 8的设备都可以升级到iOS 9。而开发人员也仅仅只需修改一个Xcode级别的设置项(IPHONEOS_DEPLOYMENT_TARGET)。

      Xcode 9 是此版本RN所需的最低版本

      我们建议使用 Xcode 9.4,因为这是Facebook官方开发测试过RN时使用的版本。

      Android 项目现在使用 Android 26 SDK 进行编译。

      在当前版本中的 target API level 保持不变。

      自2018年8月开始起,提交给 Google Play Store 的新应用程序至少需要以API 26为目标。您现在就可将项目的 target API level 设置为API​​ 26(或更新版本)。如有任何问题,请告知官方。因为我们希望在发布 RN-0.57.0 时得以确定对 Android API 26 的完全支持。

      WebView 在默认情况下只会加载http(s)URL

      默认情况下将禁用 地理位置获取

      Flow 改进, PropTypes 将被抛弃使用.

      为几个组件添加了相应的Flow类型。

      我们正在抛弃 PropTypes 和 runtime checks(运行检查),而是依赖于 Flow。您将注意到此版本中有众多的与Flow相关的改进。

      • 在较新的Xcode版本上修复项目设置警告,删除不必要的控制台日志记录。
      • 更先进的 YellowBox.
        按新旧程度排序警告,按格式字符串分组警告,显示堆栈跟踪,显示加载源映射的状态,支持检查每次出现的警告以及错误修复。
      • Prettier 文件管理!
      • 众多的错误修复.

      React Native 迭代进度

      提要: Facebook内部团队目前正在努力重构一些核心架构这是一项 正在进行的工作,距离投入开源世界使用还需要一段时间,但我们觉得有必要让您知道前文中提到的重构大体内容是什么。


      增加的新特性

      • 更新(译者注:更新内容为于babelHelpers.js文件中添加自动脚本代码) babelHelpers 以支持 Babel 7 - fbd1bea
      • FlatList 已兼容严格模式 - a90d0e3
      • 启用 ?. 可选的链接操作符插件 - aa6f394
      • 支持 flexWrap: 'wrap-reverse' - d69e550
      • 增加属性类型 accessibilityTraits 至 Text(译者注:为了修复 VoiceOver 无法正确识别标题的bug)- 654435d
      • 为 templates 添加devDependencies支持(译者注:templates 可以有一个devDependencies.json文件,在里面申明依赖项和devDependencies,亦可保持与当前版本的兼容性。) - c4ab03a
      • 在 SpringInterpolator 中添加对springDamping的支持 - 1dde989

      Android 新增功能

      • 为 build.gradle 添加 CRLF(回车符) 结尾的支持,以修正命令 react-native link 出错的问题 - 843cfc3
      • 添加一个包含数字0-9与小数点的输入键盘支持(译者注:对原生 inputType“numberDecimal” 支持) - 5b7a817
      • 增加了一种关闭 PopupMenu 元素的方式(译者注:当 Popupmenu 出现时触发屏幕方向改变[横屏/竖屏],将自动关闭Popupmenu) - 353c070
      • 添加 Image.defaultSource 属性 (译者注:此属性为设置加载远程图像时显示的占位符图像[本地资源])- https://github.com/facebook/react-native/commit/b0fa3228a77d89d6736da6fcae5dd32f74f3052c
      • 添加支持 Image 对象新属性 resizeMode=repeat (译者注:[resizeMode]当组件尺寸和图片尺寸不成比例的时候如何调整图片的大小 [repeat]重复平铺图片直到填满容器。图片会维持原始尺寸)- 0459e4f
      • Yoga: 新增了一个不推荐使用的 getParent API 变更方法 - c3c5c3c

      iOS 新增功能

      • 新增对 Xcode 9.4 和 iOS 11.4 的支持(通过版本测试) - c55bcd6
      • 添加对 Homebrew 安装的 Node 环境的支持 - 0964135
      • 添加对 textTransform 样式支持 - https://github.com/facebook/react-native/commit/8621d4b79731e13a0c6e397abd93c193c6219000
      • 添加关于 Swift 使用方法的文档到 RCTBridgeModule.h 之中 - https://github.com/facebook/react-native/commit/ca898f4367083e0943603521a41c48dec403e6c9

      修正: 功能变化

      • 升级 React Native 依赖至 Babel 7 - f8d6b97
      • 使用 react-native init 创建新项目将使用 Babel 7 - e315ec9
      • 限制 WebView 的支持范围,现仅支持http及https (译者注:禁止用户使用其他的URL,比如 file:// ): 634e7e1, 23f8f7a
      • Node 版本的最低要求升高到 node 8 - c1e6f27
      • 升级 React 版本依赖至 v16.4.1, 并同步 React Renderer 版本至 ae14317 - 72d22e8
      • 更新新项目模板的Flow配置以修复由于 @providesModule 模块被移除导致的报错:Cannot resolve module X - 843a433
      • 升级 Flow 版本至 v0.75 - 3bed272, 8aaf73b, 6264b69
      • 升级 Flow definitions (译者注:Upgrade Flow Definition in RN + Metro) - f8b4850
      • 升级 Prettier 版本至 v1.13.6 - 29fb2a8, 8aaf73b
      • 升级 Jest 版本至 v23.2.0 - 536c937#DIFF-b9cfc7f2cdf78a7f4b91a753d10865a2, 8aaf73b
      • 升级 Metro 版本至 v0.38 - d081f83
      • 现代化的 YellowBox(译者注:使用所谓 modern YellowBox 替换现有的 YellowBox,新特性包含:1.按时间倒序排序警告、2.按格式字符串分组警告[若存在]等等 )- d0219a0
      • 禁止 invariant/warning - 521fb6d
      • 移除 原生 prop 类型检查(译者注:官方消息已确认propTypes将被完整的移除,类型检查将被Flow接管) - 8dc3ba0
      • Add $FlowFixMe to invalid prop accesses where Flow wasn't complaining before - f19ee28
      • 为 Image 创建 Flow props - 8bac869
      • 为 SegmentedControlIOS 添加 Flow type - 113f009
      • 为 ProgressViewIOS 添加 Flow type - c87701b
      • 为 PickerIOS 添加 Flow type - 1c66cdc
      • 为 Switch 添加 Flow type - 06052a2
      • 为 Slider 添加 Flow type - cbe045a
      • 为 RefreshControl 添加 Flow type - 891dfc3
      • 为 ListView 添加 Flow type for - 4b1ecb6
      • 为 TextInput 添加 Flow type for - c8bcda8
      • 为 TouchableBounce 添加 Flow type for - 8454a36
      • 为 TouchableOpacity 添加 Flow type - 44743c0
      • 为 TouchableHighlight 添加 Flow type - f0c18dc
      • 为 TouchableWithoutFeedback 添加 Flow type - 0b79d1f
      • 为 ScrollView 添加 Flow type - b127662
      • 为 DatePickerIOS 添加 Flow type - 97e572e
      • 为 KeyboardAvoidingView 添加 Flow type - 188b118
      • 为 ActivityIndicator 添加 Flow type - 0b71d1d
      • 于 TouchableBounce 之中移除 $FlowFixMe - ffda017
      • 于 ScrollView 之中移除 $FlowFixMe - af6e2eb
      • 于 ListView 之中移除 $FlowFixMe - af6e2eb
      • 于 Text 之中移除 $FlowFixMe - 6042592
      • 于 RTLExample 之中移除 $FlowFixMe - 206ef54
      • 于 AppContainer 之中移除 $FlowFixMe - a956551
      • 于 Slider 之中移除 $FlowFixMe - 1615f9d
      • StyleSheet: 新增支持边框尺寸变化的动画 - 3e3b10f
      • 更新 react-devtools-core 与 plist 版本以修复由 npm audit 所报告的安全问题 - 3a1d949
      • 更新 Switch 至 ES6 Class - 970caa4
      • 更新 Slider 至 ES6 Class - 5259450
      • 更新 ActivityIndicator 至 ES6 Class - edd7acb
      • 更新 RefreshControl 至 ES6 Class - a35a238
      • 更新 KeyboardAvoidingView 至 ES6 Class - c017dcb
      • 更新 DatePickerIOS 至 ES6 Class - f8c8231
      • 更新 Text 至 ES6 Class - ab92c00
      • 将 context.isInAParentText 替换为 React.createContext - e1339bc
      • 整理(清理) Text 的实现代码 - 06c05e7
      • 更新 Text (内部实现方法)至 React.forwardRef - e708010
      • 更新 View (内部实现方法)至 React.forwardRef - 06c05e7
      • 在测试中移除 genMockFunction 与 genMockFn 并用 fn 代替 (390ded8)
      • 修正更新 ViewProps 代码 (65c336f)
      • Spread TVViewProps into ViewProps instead of intersection (bc658d3)
      • 允许在函数参数上使用尾随逗号 (1e2de71)
      • 使用 let/const 替代 react-native-github/Libraries (8f5ebe5)
      • 重构 jest 中的 MockNativeMethods (5d4c542)
      • 使用 app.json 中的 app name 来注册应用程序 (57774a4)
      • 建议使用 git apply --reject 以避免更新失败 (4fbd244)
      • 将 TouchHistoryMath 从 React Repo 移动到 React Native (06085d3)
      • 重构 RCTInputAccessoryView (c136c54)
      • 不要将 ListEmptyComponent 放入额外的 View 之中 (db061ea)
      • 将 Text PropTypes 实现独立到其专有文件中(TextPropTypes.js) (cd8128b)
      • 在 jest 之中模拟 ReactNative.NativeComponent 原生方法 (3e9a371)
      • 为 View 和 VirtualizedList 设置更为严格的类型限制 (5035af8)
      • 为 ViewPropTypes 添加可选值 (f1316ca)
      • 对于原生组件而言 propTypes 是可选的 (dbdf43b)
      • 将 Style 重命名为 DangerouslyImpreciseStyle (4895c64)
      • [BREAKING] requireNativeComponent 的签名已简化为一个额外的可选项 (820673e, b549e36, 28d3778, 1c90a2b, and 1ab7d49 by @yungsters)

      iOS 更改

      • [BREAKING] WebViews 现在有且只能使用 https ; 请勿使用 file:// (634e7e1 by @mmmulani)
      • iOS 9 是此版本RN所需的最低版本 (f50df4f)
      • 更新 podspecs 以适应 iOS 9 (092103e)
      • Xcode 9.4 现在用于运行测试 (c55bcd6)
      • 去除 iOS 11.3+ 上的控制台日志记录止 WebSocket 信息 (8125be9)
      • 暴露 RCTFont 的大小覆盖(以便于测试) (6611fef)

      Android 更改

      • 现在使用 Android SDK 26 编译项目 (065c5b6)
      • 在新的 Android 项目中使用 Google Maven repo (6d56a23)
      • 将 Buck 升级为 v2018.03.26.01 (1324e7b)
      • 升级 gradle-plugin 至 2.3.3, 升级 gradle 至 3.5.1, 升级 gradle-download-task 至 3.4.3 (699e5ee)
      • Bump NDK APP_PLATFORM to android-16 (5ae9799)
      • Bump glog to 0.3.5 (added libc++ support) (8bd4344)
      • ReactFragmentActivity 已被弃用,因为在 API-14 或更新级别时不需要 (8ea8dd6)
      • 将 Android 点击声添加至 Touchables (722f88c)
      • 默认 underlineColorAndroid 为透明 (a3a98eb)
      • WebView 在默认情况下禁用获取地理位置 (23d61b3)
      • 确保带有非法字符的 cookie 不会发送到 okhttp (04028bf)
      • 更新应用图标以以适应新的Android版本 (94393f8)
      • 为 ReadableNativeMap 提供更好的错误提示 (30d06b4)
      • 将 Fresco 更新为 v1.9.0, 将 okhttp3 更新为 v3.10.0 (6b07602)
      • 为内联图标(inline icons)添加色调颜色 (e8e2a6e)
      • 修复抗锯齿圆形背景 (7500b3e)
      • react-native link 现在使用用 '/' 代替 '_' 在 link 依赖包时. 如果您以前链接过依赖包,它们将再次 link。 (dbd4759)
      • 新项目模板将使用现有项目范围(译者注:gradle文件中设置的属性)中的属性 (5ae80f9)

      修正: 已修复的错误

      • VirtualizedList now accounts for ListHeaderComponent length when calculating offset (537731f)
      • 在打开模态窗(modals)时将阻止显示隐藏状态栏 (076b1ce)
      • 修复启用 Perf Monitor 重加载出现的崩溃问题 (4fcd997)
      • 修复了远程调试器中的并发问题 (e5aa5b7)
      • 修复 Modal + FlatList 的滚动问题 (8799047)
      • 修复 RCTNetworking 在失效期间未清除所有 tasks/handlers 的错误 (b805172)
      • 使用 keyboardShouldPersistTaps: never 修复键盘错误 (ffe6c11)
      • 修复 Text 的响应逻辑 (e2ce22b)
      • 修复 VirtualizedSectionList lint 警告 (26a1eba)
      • 修复 VirtualizedSectionList:ItemWithSeparators (488a4c7)
      • 修复 TextInput的初始布局大小 (c6b4f9f)
      • 修复 requireNativeComponent 检查 (1c90a2b)
      • 修复 TextInput 自动大写功能的BUG (ff70ecf)
      • 为 ViewPropTypes 添加缺失的事件 (41a9403)
      • 在 StatusBarManager 中添加缺少的 jest 模拟 (4a2c560)
      • 为 Metro module 添加 Flow 声明 (1853e15)
      • 修复 ReactNative.NativeComponent 类型错误 (1/2) (de11ba2)
      • 修复 ReactNative.NativeComponent 类型错误 (2/2) (7528636)
      • 将 Image PropTypes 相关代码独立到新文件(ImageProps.js) (6765699)
      • 测试: Fix JUnit report location when running Jest (85fc98d)
      • 测试: Fix ReactImagePropertyTest SoLoader failures (#19607) (a52d84d)
      • 测试: Fix jest snapshot testing on Windows (216bce3)
      • 修复 使用 react-native init 新建项目时出现的 "Cannot resolve module" 错误 (27a497d)
      • 紧急修复关于 react-native-windows 的错误 (600747f)

      iOS 更改

      • 修复在 Xcode 10 beta 版本中出现的 undefined_arch 错误 - 3861dbef5b34734283563e28b454b68d3265d21a
      • 使 react-native run-ios 命令与多个 Xcode 版本可以更好的配合使用 (302699a)
      • 修正 fishhook 依赖引入 (ca515e9)
      • 修复 TextInput 组件在用空字符串清除文本后输入字符时发生的 Backspace 事件错误 (1ffb2b6)
      • 公开 InputAccessoryView 组件,修复其无法被 import 的错误 (80fc415)
      • 修复 InputAccessoryView 安全区域的一致性错误 (490f22a)
      • 修复头文件中使用C ++语法的问题 (bfcfe79)
      • 修复 run-ios 命令中安装步骤的bug (0934c17)
      • 修复 run-ios 无法打开ios模拟器的bug (9736ddc)
      • 为 Fishhook 使用正确的依赖库。 这将修复 Xcode 9 和 Xcode 10 上的编译错误。 (a8b7457)
      • 将缺少的 onChange 事件定义添加至 DatePickerIOS (3b53091)
      • 修复调用 Xcode 9.3 编译打包阶段引起的崩溃 (344c205)
      • RNTesterPods: 添加缺少的依赖 (128c934)
      • RNTesterPods: 将参数 has_value() 修正至 hasValue() (128c934)
      • RNTesterPods: 修正引入的依赖 RCTTestAttributes.h (128c934)
      • RNTesterPods: 修正 conversions.h 以使用正确的命名空间 (128c934)
      • Fix or mark enum conversions surfaced by -Wenum-conversion (b8f30db)
      • 在缺少 DevSupport subspec 的情况下修正 CocoaPods 集成 (c09d509)
      • 更新 Yoga 以处理 Xcode 框架项目中的内容 (cf036db)
      • 修正 Blob 内存泄露 (122b379)
      • 重加载 JS 时避免出现双重加载错误 (b348aa1)
      • 取消关于 RCTCxxModule 的错误警告 (af76473)

      Android 修正

      • 修正 TextInput 在 Android 上的异常缓慢bug (1b4187f)
      • 修正绘制边框的路径尺寸,避免出现边框模糊的情况 (c5ca26a)
      • 不要在 .android.js 文件中向 requireNativeComponent 传递参数 (a51e8b1)
      • 当父级组件滚动时,避免 RefreshControl 被卡住 (33ffa79)
      • 防止不被支持的 ellipsize 模式导致应用崩溃 (85e33aa)
      • 修复 DevServerHelper 中的 okhttp3 响应处理bug (56d48bd)
      • 修复 ReactInstanceManager unmountApplication 以支持 ReactRootView 回收 (4a9b2a7)
      • Fix NullPointerException when emiting event using UIManagerModule (291c01f)
      • 修复 Android 构建向导的 link (57e7556)
      • Fix Android open source test failures (3e0ebc7)
      • 修复视图索引 LayoutAnimation (d8fcdb9)
      • 修复 originalNode 内存泄露 (8102e35)
      • 修复 ScrollView 中的 TextInput BUG (2f1421d)
      • Disable onKeyPRess logic when handler not defined (41975f7)
      • 在 pre-M android上修复权限请求 (6d27bd1)

      移除:已移除的功能

      • 弃用 focusTextInput 和 blurTextInput (ce3b7b8)
      • [BREAKING] ImageResizeMode on Image is no longer exposed; check your usage of resizeMode; the same resize modes exist, but pass them as strings instead (870775e by @TheSavior)

      Android 功能移除

      • 移除原生扩展 (7c5845a)
      • 移除 Fresco ProGuard 规则 (07df365)

      iOS 功能移除

      • 移除已弃用的 UIActionSheetDelegate 方法 (5863b56)

      已知的问题

      在此版本的 RC 测试期间,部分问题还没有最终解决方案( 19827, 19763, 19859, 19955 )。 我们知道这些问题的存在,希望通过发布0.56.0版本,能促进开发人员找到最终的解决方案,从而实现更快的解决方案和更好的0.56.1版本。 因此,请在提交新问题之前检查已经提交的问题。

      如果您使用Windows开发React Native应用程序,我们建议您特别关注这些问题(issue),因为有很多关于 Win 10 和 RN 0.56 相关问题的报告。

      发布在 公告
      W
      wlfcss
    • 2018年 React Native 官方展望

      原文地址

      译者注:由于个人水平有限,翻译可能有不准确的地方,望谅解。如果发现有翻译不准确的地方,可以留言或是于Github上提交:react-native-docsZh。译者:wlfcss 转载请注明来源

      2018年 React Native 官方展望(state-of-react-native-2018)

      自从上次发布关于React Native的更新状态已经有一段时间了。

      在Facebook内部,我们将React Native技术应用到更多的重要项目中。我们最受欢迎的产品之一是Marketplace,作为我们的顶级应用,每月有8亿人使用。自2015年构建以来,Marketplace已完全使用React Native构建,共计超过100个视图(页面)。

      我们也在应用的许多新部分使用 React Native。如果您看了上个月的F8主题演讲,就会发现 Blood Donations、Crisis Response、Privacy Shortcuts 和 Wellness Checks 的所有新功能都是使用 React Native 构建的。Facebook 主应用以外的项目也在使用 React Native。新的 Oculus Go VR 头戴式设备对应的移动应用程序 就完全使用 React Native 构建。

      当然,我们也使用许多其他技术来构建我们的应用程序。Litho和ComponentKit是我们在应用程序中广泛使用的两个库;React Native 的目标从来都不是替代其他技术,专注于 React Native 自身,努力使之变得更好,但依旧希望看到其他团队从 React Native 中得到一些想法或灵感,例如将instant reload(即时重载)运用到非 JavaScript 代码中。

      架构

      当我们在2013年启动React Native项目时,React Native 项目的设计初衷是成为 JavaScript 和原生应用之间的一个异步,序列化和批处理的“桥梁”。
      React DOM 将 React 的状态更新变成了命令式、可变的 DOM API 调用,如 document.createElement(attrs) 和 .appendChild(),而 React Native 则返回一个单独的 JSON 消息,它列出了要执行的一些操作,如 [["createView", attrs], ["manageChildren", ...]]。就像React DOM将React状态更新变成命令式的,对document.createElement(attrs)和.appendChild()等DOM API的可变调用一样,React Native被设计为返回一个列出要执行的突变的JSON消息,如[[“createView “,attrs],[”manageChildren“,...]]。 我们将整个系统设计为永不依赖获取同步响应,并确保列表中所有的内容都可以完全序列化为 JSON,并可以反序列化回来。这样做是为了提高灵活性:在这个架构之上,可以构建像 Chrome 调试器之类的工具,这些工具可以通过 WebSocket 连接异步运行所有的 JavaScript 代码。

      在过去的五年里,我们发现最初的设计原则加大了某些特性的开发难度。异步桥接(asynchronous bridge)意味着不能直接将 JavaScript 逻辑与很多原生 API 集成在一起,因为这些原生 API 是同步的。批量桥接(本地调用队列)意味着 React Native 应用程序调用本地函数会更加困难。而且串行化的桥接意味着不必要的复制,因为它不是直接在两个世界之间共享内存。对于完全使用 React Native 构建的应用程序,这些限制通常是可承受的。但对于在 React Native 与现有原生代码之间进行复杂集成的应用程序,就非常糟糕了。

      因此,Facebook 正在对 React Native 进行大规模重构,让框架变得更加灵活,并更好地与JavaScript / 原生混合应用中的原生基础设施集成。 通过这个项目,将应用在过去 5 年中学到的知识,逐步让架构走向现代化。我们正在重构 React Native 的核心部分,大部分工作都是在底层进行的,
      现有的 React Native 应用程序几乎不需要做出更改

      为了使 React Native 更轻量化并能更好地适应现有的原生应用,此次重构主要从三个方面进行。首先,我们改变了线程模型:UI 更新不再需要在三个不同的线程上执行,可以在任意线程上同步调用 JavaScript 进行优先更新,同时将低优先级工作推出主线程,以便保持对 UI 的响应。其次,将异步渲染功能引入 React Native 中,允许执行多个渲染并简化异步数据处理。最后,简化桥接,让它更快、更轻量。原生和 JavaScript 之间的直接调用效率更高,并且可以更轻松地构建调试工具,如跨语言堆栈跟踪。

      完成以上工作之后,将带来更紧密更合理的集成。现在,如果不通过复杂 hack 的手段就无法让原生导航和手势处理或原生组件(如 UICollectionView 和 RecyclerView)一起工作。在对线程模型做出更改之后,我们将可以直接构建这样的功能。

      当这个项目将要完工时,Facebook 会披露更多的细节,敬请期待。

      社区

      除了Facebook 内部社区外,我们很高兴在Facebook之外拥有蓬勃发展的React Native用户和合作者。 我们希望与React Native社区有更多的沟通与支持,以此能更好地为React Native用户提供服务并让开发者更易于做出贡献。

      React Native底层体系结构的更改将有利于与其他原生基础架构更加简单地进行交互操作一样,React Native在JavaScript端应该更加简单轻度,以更好地适应JavaScript生态系统,包括VM和bundler之间的通信交换。我们知道变革的步伐很难跟上,所以我们希望找到减少频繁发布新版本的方法。 最后,我们知道现有的文档缺少关于启动优化等诸多方面的内容,这些情况将在未来一年中有所改善。

      如果您使用的是React Native,那么您就是我们社区的一部分; 请将您使用React Native的困惑反馈给我们。

      虽然React Native只是移动开发者工具箱中的一个工具,但我们对其有充分的信心与支持 - 我们每天都在改进,去年有500名贡献者提交了超过2500次提交。

      发布在 公告
      W
      wlfcss
    • RE: 官方都0.54了中文网怎么才0.51

      @晴明 我这边会持续更新新的changelog,文档翻译我还在找审校

      发布在 讨论区
      W
      wlfcss
    • RE: 官方都0.54了中文网怎么才0.51

      @xyy7260 https://github.com/wlfcss/react-native-docsZh 我这也正在自己翻译,可以参考

      发布在 讨论区
      W
      wlfcss
    • [0.55] React Native 中文更新日志

      [0.55] React Native 中文更新日志

      译者注:由于个人水平有限,另外翻译changelog需要阅读大量PR,翻译可能有不准确的地方,望谅解。如果发现有翻译不准确的地方,可以留言或是于Github上提交:react-native-docsZh。

      欢迎来到2018年3月的React Native发布!自二月份以来,超过81名社区开发者提交了247次提交。

      新的亮点:

      • React Native现在已经全面改为MIT license (译者注:原来的许可为原来的许可为BSD+Patents license)
      • 已支持 Android TV 设备的开发


      RNAndroidTVDemo

      • 使用原生驱动的Animated tracking(动画跟踪) - 示例可查 silky smooth framerate
      • 众多的流程改进
      • Bug修复

      通用


      增加的新特性

      • 增加对原生驱动的Animated tracking(动画跟踪)的支持,现在你能使用useNativeDriver 标签来跟踪其他 Animated.Values动画。(b48f7e5 by @kmagiera)
      • 新增一个UTFSequence模块用于处理常见的Unicode序列(比如Emoji)(54870e0 and 4761d5a by @sahrens)
      • 为 TextInput 新增了一个 contextMenuHidden 属性(译者注:由于长按TextInput 后会出现在一个编辑菜单,比如复制、粘贴、剪切、全选等选项。新增的contextMenuHidden属性则可以禁止此菜单的出现) (2dd2529 by @amhinson)
      • 将 testOnly_pressed 添加到 TouchableHighlight 以进行快照测试 (3756d41 by @sahrens)

      更改: 现有功能的一些变化

      • React Native 现已经采用了MIT许可证 (1490ab1 and 26684cf by @sophiebits)
      • HelloWorld模板现在从Git中排除 *.jsbundle 文件 (2123108 by @aneophyte)
      • react-native-git-upgrade 工具现在将把合并冲突的文件标记为红色 (e53a8f7 by @alvinthen)
      • ResolvedAssetSource 类型将可访问所有的只读属性 (4d0ee37 by @sahrens)
      • Flow 的类型改进 (b6c7e55, b98bf1e, 80c1839, 70a3ece, f734357, a817c64, 3fd82d3, cd8128b, 5035af8, 26734a8, 321ba06, b6b80f6, f1316ca, 2520c64, 214da52, dbdf43b, 49396aa, 4895c64, a3c07c9, 49ffc9f, and c129457 by @TheSavior, @yungsters, and @alex288ms)
      • 改进了 WebSocket.js 的跨平台支持 (b9be289 by @rozele)
      • CLI创建目录将有更好的错误处理能力 (d2817f4 by @BridgeAR)
      • 验证传递给 createAnimatedComponent 的组件是否能正常工作 (10b642a by @janicduplessis)
      • 避免将emoji表情从中截断 (9c8c597 by @Vince0613)
      • 在 UIManager 中移除平台检查使代码能更好的适用于 out-of-tree platforms (84affbd)
      • In CLI, fix issue with isInstalled check for Android and references to unregister 在CLI中,修复 Android 的 isInstalled 参数传递检查以及link解除bug(译者注:react-native-link 命令存在bug,会出现无法解除link的情况,因为传递到isInstalled的参数存在错误)(ec88489 by @rozele)

      修正: 已修复的错误

      • 在 TouchableOpacity 中,当属性为disabled时,透明度控制动画依旧会生效(9366ce4 by @maxkomarychev)
      • 修复了使用 react-native-vector-icons 时遇到的问题(译者注:1.将测试文件夹添加进 .npmignore 文件中,2.将默认黑名单添加到生成设置中,以防止 Metro 处理不正确的引用文件。) (a759a44 and 54dc11a by @jeanlauliac and @t4deu))
      • 为 Jest 添加缺少的模拟 removeEventListener 方法 (59c7b2c by @MoOx)
      • 修正根据纵横比进行主尺寸计算 (f751c34)
      • 修复了Subscribable中由于uglify-es造成的崩溃 (b57a78c by @iMagdy)
      • 更新 node-notifier 依赖以修复内存泄漏问题 (860fcd4 by @rickhanlonii)
      • 修复 pollParams 和 link 的问题 (ca8ce83 by @grabbou)

      移除: 被删除的功能

      • 移除各种类型(译者注:1.从StyleSheetTypes中删除未使用的导出 2.将 StyleSheet.create 类型为私有 3.删除内部样式表类型的使用 4.删除样式类型检测StyleProp的使用) (b58e377, ee26d9b, d89517d, 852084a by @TheSavior)
      • 删除在Systrace.js 之中的 Systrace.swizzleJSON() (3e141cb by @yungsters)

      Android相关

      Android-新特性

      • 新增对于 Android TV 设备的支持 (b7bb2e5 by @krzysztofciombor)
      • 为 Text 和 TextInput 实现了样式属性 letterSpacing(https://github.com/facebook/react-native/commit/5898817) by @motiz88)
      • 现在会显示 Bundle 包的下载进度 d06e143 by @janicduplessis)
      • AndroidInfoModule 现在会返回 Android ID (译者注:在设备首次启动时,系统会随机生成一个64位的数字,并把这个数字以16进制字符串的形式保存下来,这个16进制的字符串就是ANDROID_ID,此数字可能会因root或返厂被改变。另外某些厂商的定制系统的ANDROID_ID会有重复;或者返回值为null) (216c8ec by @L33tcodex0r)

      Android-Bug修复

      • 修正行高计算错误 (74e54cb by @strindhaug)
      • 修复0.53版本引入的 TextInput 方法 onKeyPress 造成的崩溃问题 (b60a727 by @joshyhargreaves)
      • 更新ReactAndroid构建脚本以支持 gradle 2.3.0 (d8bb990)
      • 使用 Fetch 方法时,允许在Android上捕获“意外URL”的异常 (da84eba by @jcurtis)
      • 修复 TextInput 的 onLayout 属性 (8a073c1 by @rozele)
      • 修复使用 native navigation 造成的 ViewPager 的bug (译者注:使用wix导航库导航,viewpager会失去定位焦点) (a1295e1 by @ruiaraujo)
      • 修正了在本地化之中导致DevSettingsActivity的崩溃 (427e464 by @ayc1)
      • 修复 touch-responsive views 中缩放造成的崩溃 (67c3ad4 by @tobycox)
      • 修复 “循环原生动画” 中的错误 IllegalStateException (ef9d1fb by @kmagiera)
      • 修复关于安卓JS模块的文件引用Bug (c20e0f9 by @fkgozali)
      • Fix ReadableNativeMap.toHashMap() for nested maps and arrays (8a6ab14 by @esamelson)
      • 修复 Android Sanity Buck 版本检查 (e057322 by @hramos)
      • 通过遵循 whatwg.org 的 XMLHttpRequest send()方法修复与Firestore的连接 (d52569c by @samsafay)
      • 现在可以从 SectionList 或 FlatList 中设置 invertStickyHeaders (3d69b5c by @dannycochran)

      Android-移除

      • ReactInstanceManager#registerAdditionalPackages 已被删除; 创建UIManager界面并在uimanager/common中获取常用类 (6b45fb2 by @mdvacca)

      iOS相关

      iOS-新特性

      • 关于 InputAccessoryView, 一个可以自定义键盘输入附件视图的组件 (38197c8, 84ef7bc, and 6d9fe45 by @PeteTheHeat)
      • base-line metric exposure for Text and TextInput (51b3529, 0dbe183, and 7630a61 by @shergin)
      • DatePickerIOS 现在有 initialDate 属性 (446ce49)
      • Expose version via RCTVersion.h's RCTGetReactNativeVersion() (30469ed by @LeoNatan)
      • 允许使用 react-native run-ios --simulator ... 来同时运行多个模拟器 (2ad3407 by @koenpunt)
      • 引入RCTSurfaceHostingProxyRootView以迁移到RCTSurfaceHostingView (34b8876 by @fkgozali)
      • 新的 UIManager API 允许拦截/延迟挂载过程 (402ae2f and b90c1cf by @shergin)

      iOS-更改

      • tvOS 的 onPress 放大动画现在可以通过 tvParallaxProperties 属性对象使用 pressMagnification, pressDuration 和 pressDelay 等方法实现 (6c353fd by @JulienKode)

      iOS-Bug修复

      • DevLoadingView 现在支持iPhone X (47b36d3 by @mrtnrst)
      • 添加边界检查以防止 ScrollView 滚动超出 ScrollView 边界 (16c9e5b by @siddhantsoni)
      • NetInfo 的 isConnected 方法可正常使用了 (dbafc29 by @alburdette619)
      • 在 AlertIOS 之中, 已修复重复的 var 名称声明 (6893a26)
      • 可使用 react-native run-ios --device [id] 来选择设备运行APP (f8fee0a by @jozan)
      • 当运行命令 run-ios 收到错误 Entry, ":CFBundleIdentifier", Does Not Exist 的BUG被修复 (5447ca6 by @blackneck)
      • 修复了 iOS 上 Text measurent 中的问题 (a534672 by @shergin)
      • 修复tvOS在重新加载时引起崩溃的问题 (3a3d884 by @dlowder-salesforce)
      • 修正了在 Text 中定位嵌套视图的错误 (7d20de4 by @shergin)
      • 修复 blob 方法返回的结构体序列化后 body 为空的问题 (093a78d by @janicduplessis)
      • 修复 tvOS react-native init 发布版本的bug (译者注:已将正确的依赖关系和链接器标志添加到HelloWorld模板的Xcode项目中) (3002c4e by @dlowder-salesforce
      • Fix RedBox from bridge reload due is not re-registering its root view (2e51fa5 by @fkgozali)

      iOS-移除

      • 删除 callFunctionSync 的实验性 APIs (19a4a7d by @danzimm)
      发布在 公告
      W
      wlfcss