React Native 0.27 正式版发布



  • 原文地址

    从0.18开始,RN默认项目全面转向ES6,语法大变化,请参考此贴学习 http://bbs.reactnative.cn/topic/15

    本站完整打包0.27版本下载(无需init新项目和科学上网)

    如何升级现有项目的RN版本?

    重大变更

    在react-native中引用React的做法发生了变更(在当前版本老的做法会报错):

    之前

    import React, { Component, View } from 'react-native';
    

    现在

    import React, { Component } from 'react';
    import { View } from 'react-native';
    

    具体哪些属于React,哪些属于React Native,可以参考这篇帖子(需要科学上网)。

    我摘录如下:

    "react":

    Children
    Component
    PropTypes
    createElement
    cloneElement
    isValidElement
    createClass
    createFactory
    createMixin

    "react-native":

    hasReactNativeInitialized
    findNodeHandle
    render
    unmountComponentAtNode
    unmountComponentAtNodeAndRemoveContainer
    unstable_batchedUpdates
    View
    Text
    ListView
    ...
    以及其他所有的原生组件。

    不兼容的修改

    NavigationLegacyNavigator 原来是用于帮助人们在不改动API的情况下迁移到新的导航库。这会使得我们不得不把那些不必要的旧API也全部迁移到新的导航库中。

    考虑到在产品中使用NavigationLegacyNavigator是不应该的,所以我们决定移除掉它,并会在将来把原来的Navigator改名为NavigatorDeprecated

    NavigationExperimental中的容器并不建议使用,因为应用的状态应当被应用的架构所管理,譬如使用redux、flux或者组件状态。

    这个提交把样例修改为使用组件状态来保存的,不过也有其他很多例子用来展示如何使用NavigationAnimatedView和redux的导航器reducer。:

    https://github.com/jlyman/RN-NavigationExperimental-Redux-Example
    Switching the f8 app with redux to navigation experimental: fbsamples/f8app#14

    使用<NavigationView /> 没有明显的作用,并且维护起来非常麻烦。

    它的功能完全可以通过创建一个关闭了切换动画的NavigationAnimatedView来实现。

    它还可以被一个单纯的View和一个普通的场景渲染器来替代。

    新特性与增强

    修复BUG:使用“检查元素”功能查看动画组件时会产生报错。

    修复BUG:在controlled component来控制RefreshControl时,状态显示错误

    看起来像是一个每一个项目都可以被左滑以展示功能菜单的View

    • 为NavigationAnimatedView的场景渲染器增加transition属性。 (55c3086<) - @hedgerwang

    为新导航器增加transition属性

    • 让BugReporting支持自定义的源文件 (610cfdc) - @lexs

    • 给元素检查器增加"Open file"(打开文件)按钮 (f203c5d) - @frantic

    使你可以直接在元素检查器中点击元素,在电脑上直接查看对应的文件

    • 给react-native的babel预配置集合增加插件 transform-react-jsx-source (858643d) - @frantic

    这个插件往JSX里增加了标记信息,用于识别元素所对应的源代码位置。

    这个新组件和原来的NavigationAnimatedView类似,稍后会废弃屌原来的NavigationAnimatedView。

    不同之处:移除了属性applyAnimation,添加了新属性configureTransition, onTransitionStartonTransitionEnd

    这在将来可以用于解决各种rnpm与react-native的版本不兼容问题。

    Bug修复

    • 在初始化react实例的时候阻塞对JS模块的调用(a1ba091) - @astreet

    • 修复NavigationCard的属性类型检查。 (b1cd1cb) - @hedgerwang

    • 修复RefreshControl的访问冲突(fbce30) - @janicduplessis

    • NavigationExperimental: didFocus 事件应当在动画结束之后再调用。 (8975bb8) - @hedgerwang

    • 修复当初次渲染RefreshControl就要求刷新的时候并没有开始刷新的问题。(cac5ce3) - @aforty

    • 修复NavigationPropTypes.SceneRenderer是一个普通对象的问题(0e997c6) - @joenoon

    现在拆分了SceneRenderer和SceneRendererProps,解决了类型检查时候导致的问题。

    默认的icon size会导致拉出的图片溢出到SwipeableRow之上。现在所有的样式都必须由调用者传入,由调用者自行控制相关的尺寸来达到最佳适应。

    • 解决了95%的WindowedListView乱跳的问题 (5e91a2a) - @sahrens

    • 解决了SwipeableRow在Android下闪烁和在iOS下晃动的问题(62e588b) - @fred2028

    • 解决ListView的onChangeVisibleRows所汇报的行数不正确的问题(0aea74e) - @dmueller39

    安卓

    新特性与增强

    现在还没有实际作用不过将来这个将被用于记录和跟踪滚动条的滚动性能。

    Bug修复

    • 修复通过Controlled模式使用Android Picker时的问题 (0cd2904>) - @spicyj

    • 使得Modal弹框时的状态栏保持沉浸式 (191d278) - @jemise111

    • 为较老的Android设备增加React队列所允许的栈大小 (d4f6f61) - @nikki93

    • 在发送触摸时间时携带时间戳信息,以使得反馈更为准确 (f2c1868) - @dmmiller

    iOS

    新特性与增强

    • NavigatorIOS: 导出了interactivePopGestureEnabled属性 (4d2c72b) - @rigdern

    该属性可以禁用左滑返回上一页。

    Bug修复

    • 修复了LocationObserver的distanceFilter缓存问题(2310494) - @jrichardlai

    • ScrollView: 触发onScroll事件时现在总是会发送最终的滚动位置(deef8aa) - @rigdern

    当设置了scrollEventThrottle时,以前的版本并不保证最终的位置能被发送。



  • 0.18版,标题不是0.27吗?这是怎么对应的?



  • @Jay-Y 一个固定的提示而已