【0.42】React Native 中文更新日志

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

一、前言

想必也没什么人爱看更新日志这种东西,所以我直接总结一下好了。整体而言修复了一些以往版本的bug,在Android和iOS平台上各增加了一些无关痛痒小功能。还宣称提高了检测属性变化的效率,因为属性变化就意味着重新render,所以按官方的说法这次更新是对属性变化的检测也更为严格了。但到什么程度,还未知。

至于很多人关心的效率方面,似乎这个版本并没有太大的提升。毕竟属于日常升级,所以也是情理之中。

但是亮点还是有:

1.属性支持百分比参数了,目前仅支持(padding,margin,width,height,minWidth,minHeight,maxWidth,maxHeight,flexBasis)。使用方法:padding:’30%’
2.init project 的时候,可以选择创建带有一些常用页面的模板工程了。但是目前好像模板还比较少,具体可以看这里【戳我没错】。比较期待这个功能,要是可以支持自定义模板就好了。

差不多就这些,想看详细内容的可以继续往下看。想看英文原文的请戳本文最顶部的链接。翻译的比较水,没人给校正,各位随意看看就好了!

二、重大变化


iOS/Android双平台:
- 优化属性发生变化时的验证方式和效率

Android平台:

  • 新创建的应用 windowSoftInputMode 默认的模式发生改变。

    现在所有通过react-native init所创建新项目,在 Android 平台上将 Activity 的 windowSoftInputMode 属性由之前默认的 adjustUnspecified,改为 adjustResize。通过这种 Native 方式解决 Android 上键盘遮挡输入框的问题,而不再使用JS的解决方式,比如之前用到的 KeyboardAvoidingView组件。

  • 移除 JSBundleLoader.getSourceUrl() 方法。

    如果你使用到了以下API:
    1.JSBundleLoader.getSourceUrl()
    2.ReactInstanceManager.getSourceUrl()
    3.ReactInstanceManager.getJSBundleFile()
    现在必须改为调用:
    1.CatalystInstance.getSourceURL()
    2.JSBundleLoader.loadScript()

  • 移除 RecyclerViewBackedScrollView 组件

    这个组件是很久之前为了解决 scroll-back-when-data-is-added 这个bug而添加的,但是现在已经直接通过ScrollView内部代码解决了这个问题。

三、新特性


1.iOS/Android双平台:

  • WebView 组件新增 injectJavaScript 方法

    该方法支持直接向 WebView 组件注入 JS 代码,但是并不可以用于在页面加载完后执行 JS 代码。


2.Android平台:
  • 让布局动画遵守样式中设置的不透明度
  • Text 组件新增 selectionColor 属性
  • ScrollView组件新增 overScrollMode 属性
  • 实现自定义基线函数的Java绑定
  • TextInput:避免二次触发 onSubmitEditing
  • 通过 Native 代码实现 ScrollView.scrollToEnd
  • 支持从Java同步钩子调用和返回任意类型
  • Switch 组件支持 tintColor 和 thumbTintColor 属性
  • Slider组件支持自定义 thumb,track,progress 属性
  • 为 dynamics 添加 null 检查
  • 在BUCK文件中添加缺少的导入
  • 引入 FallbackJSBundleLoader
  • 改进在 Text 组件中嵌套组件时的报错机制
  • 在 pointerEvents 设置后仍允许组件折叠起来
  • 修改 WebView 的 DomStorageEnabled 属性默认值为true
  • 允许将 view manager 当做 Native模块访问
  • 不需要 DevSupportManager 去创建一个 DevInternalSettings
  • 删除 ModuleRegistryHolder
  • 使 NativeArray 的消费变为显式

3.iOS平台

  • 给 AlertIOS.prompt() 方法添加一个 keyboardType 参数
  • 为 RCTEventEmitter 添加使用说明文档
  • 删除 RCTExecuteOnMainThread 的弃用警告
  • 在 RCTTouchHandler 中添加新的方式处理并发手势识别
  • RCTTouchHandler 不再延迟任何触摸
  • 删除过期方法 ‘RCTExecuteOnMainThread’
  • 在新 bridge 上禁用RCTPerfMonitor
  • 更新 NativeComponentsIOS.md 文档
  • RCTConvert:不推荐使用NSStringArray typedof
  • 去除 NativeModules 中的 RK/RCT 前缀
  • 添加在app 启动时开启 sampling profiler 的选项
  • 为考虑 ABI 兼容性使用 int 代替 NSInterger
  • 停止将未使用的 JS 文件复制到 Pods 文件夹中
  • 在没有 bundle 时候显示 redbox
  • 按下重新加载时自动关闭 redbox
  • ‘cannot calculate shadow efficiently’ 不再会报警告
  • 更好的执行 intrinsicContentSize
  • 将 setFrame, setLeftTop 等方法弃用或者删除
  • UIManager.measure() 支持任意 zoom 效果下的 view hierarchy
  • 向 JS 提供 Native 运行的环境和参数是测试、开发还是生产环境模式
  • 可以通过配置环境变量禁用 yellow box 警告

4.其他

  • 更新 React 版本到 15.4.1。
  • 为组件的部分属性添加百分比支持,目前支持(padding,margin,width,height,minWidth,minHeight,maxWidth,maxHeight,flexBasis)。
  • JSC堆捕获将其他 roots 添加到可视化。
  • 为 ScrollView 和 ListView 添加 scrollToEnd 方法。
  • Packager: 内部增加记录错误的程序。
  • 在 node_modules 下添加 symlinks 作为projectRoots 的一部分。
  • 添加 cell size 到 JSC heap capture visualization。
  • 为 Navigation.Header.BackButton 添加 style 和 imageStyle 的属性。
  • 可以通过 ‘react-native’ 命令创建制定类型模板的项目
  • 通过 ‘react-native init’ 初始化项目时创建README
  • 可以通过 ‘react-navigation’ 直接创建带有导航器的项目
  • 通过 Yarn 安装或卸载包
  • 通过 package.json 脚本运行程序
  • 更快的生成 source map
  • High-perf source map builder
  • 在 AnimatedValueXY 中添加 removeAllListeners 方法
  • 可以控制 image 的缓存策略
  • 支持在Windows上复制到剪贴板
  • 使用 fbjs/lib/invariant 替代 invariant
  • 允许在场景堆栈上设置自定义样式
  • 将C ++ bridge 移到oss目录中
  • XHR: support typed arrays for request payloads
  • 通过 NativeAnimated 可以驱动任何数字的属性
  • 确保文档的链接地址正确
  • 避免在 TextInput 中出现空的 _inputRef
  • 允许在调试器视图中使用深色背景
  • 当 row 被滑动到关闭的位置时,适当的清除 openRowID
  • 取消 SwipeableQuickActions 中对 action 的最大限制(之前限制为2)
  • 允许长宽比超出父组件的边界
  • 将 TextUpdate 的padding 信息转移到 text input 组件上
  • 不限制在大小为0的父组件中使用 absolute 定位子组件

四、修复Bug


1.iOS/Android双平台:

  • 修复子组件尺寸溢出父组件时该父组件的大小
  • 在 Native 的代码中修复了 skew transform

2.Android平台:

  • 修复在 dev 模式下 JSC 崩溃问题
  • 修复在 startup 时候抛异常的问题
  • 修复 ListView 滑动阻塞问题
  • 修正在 NativeModulesAndroid.md 文件中的错别字
  • 修复 UIExplorer 进入破碎状态
  • 修复调用 webview.postMessage 时抛出 not a constructor in WebView 的问题
  • 修复 TextInput 的占位字符自定义字体无效的问题
  • 修复 UIViewOperationQueue 中的潜在 NPE
  • 修复在动画状态时的组件使用 LayoutAnimation 动画开始位置错位
  • 重置 pointerEvents 为空值

3.iOS平台

  • 修复 TextInput 在开启校正功能后自动回调 onChange() 方法的问题
  • 修复正式版测试用例:添加 -ObjC and -lc++ 测试目标
  • 修复 passThroughTouches
  • 修复 nil TVView on pop
  • 修复在编译时关于索引类型不正确的警告
  • 通过添加 __unused args 标记来修复其他编译警告
  • 使 CocoaPods 可用

4.其他

  • 纠正 PixelRatio.md 中的拼写错误
  • 修复在 VerticalSwipeJump 模式下手势返回方向错误的问题
  • 修复 node4 上的打包程序崩溃的问题
  • 修复通过 HTTP 加载 minified bundle 的问题
  • 修复在使用 min-size 约束时换行的计算方式
  • 修复 skew transformation
  • 纠正在 Yoga classes 中的拼写错误
  • 纠正 webview 示例中字符串信息的拼写错误
  • 纠正 ResolutionRequest.js 中的拼写错误
  • 修复在 align-item 或 justify-content 使用center或flex-end时 absolute position 出现的问题
  • 修复导航器场景被错误地折叠
  • 修复使用 margin 时的长宽比不准确的问题
  • 修复 app 无故崩溃的问题(终于修复了!!!)
  • 打破仅在调试环境中发生的无限循环

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: React Native的热更新是指在不需要重新发布和重新安装应用程序的情况下,通过更新应用程序的JavaScript代码来实现应用程序的更新。在安卓平台上,可以通过插件实现应用的热更新,但是在iOS上却无法实现。这是因为苹果对应用的审核标准非常严格,并且发版速度较慢,所以热更新能力对于iOS应用显得尤为重要。在React Native中,可以使用CodePush插件来实现热更新。CodePush插件提供了一组API,可以用于获取当前已安装更新的元数据、检查是否有更新可用并下载更新等操作。具体的代码可以参考CodePush的示例应用中的demo.js文件,这个文件中包含了每次启动应用程序时检查更新和下载的代码。通过使用CodePush插件,开发者可以方便地实现React Native应用的热更新功能。123 #### 引用[.reference_title] - *1* [快速了解react native更新](https://blog.csdn.net/wangbaobao512/article/details/127241775)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* *3* [React Native CodePush 最新配置](https://blog.csdn.net/maomaoyu3211/article/details/84908556)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值