React Native 0.77发布,新样式特性,Android 16KB页面支持,Swift模板

React Native 0.77发布,新样式特性,Android 16KB页面支持,Swift模板
最新回答
深蓝菇凉

2021-11-02 21:53:05

React Native 0.77 版本发布的新特性、改进与迁移说明

一、新特性亮点

(一)CSS 新特性助力布局、尺寸与混合效果

  • display: contents:该属性简化了布局逻辑,使元素自身在布局结构中“消失”,但子元素仍正常渲染。这有助于在不影响布局的前提下为子元素应用样式,适用于构建需处理事件的包装组件或与 ShadowTree 交互的场景。
  • boxSizing:精确控制元素尺寸计算,支持 border-box 和 content-box 两种值,默认值为 border-box(与网页默认值不同,此默认设置是为保证向后兼容性)。开发者可据此灵活调整布局尺寸逻辑。
  • mixBlendMode 与 isolation:mixBlendMode 属性允许元素在堆叠上下文中与其他元素混合颜色,实现丰富视觉效果。同时,新增 isolation 属性,可防止具有 mixBlendMode 的子元素过度混合颜色,让开发者对颜色混合范围有更精细掌控。
  • Outline props:引入 outlineWidth、outlineStyle、outlineSpread 和 outlineColor 等轮廓属性,可在不影响布局的情况下突出元素,为样式设计提供更多选择。

(二)Android 支持增强

  • 适配 Android 15 强制边缘到边缘显示:在 targetSdk 为 35 构建应用时,Android 15 会强制应用全屏显示。React Native 0.77 提供了对此变化的适配支持,开发者需确保应用在新特性下正常显示。
  • 支持 16KB 页面大小提升性能:Android 15 支持 16KB 内存页面大小,React Native 0.77 已准备好全面支持此功能,为未来设备兼容性和性能优化奠定基础。

二、社区 CLI 和模板更新

(一)社区 CLI 变更

  • 弃用 react-native init 命令:开发者可选择使用 Expo 的 npx create-expo-app 命令或通过 npx @react-native-community/cli init 直接调用社区 CLI 来创建新项目。
  • 移除 Metro 中的快捷操作键:去掉了 Metro 中用于调用 run-android 和 run-ios 社区 CLI 命令的‘a’和‘i’键盘快捷键。

(二)社区模板更新

  • iOS 模板编程语言迁移:将 iOS 应用的社区模板编程语言从 Objective-C 迁移到 Swift,新项目默认使用 Swift。但需注意,若应用有 C++ 编写的本地模块,因 Swift 与 C++ 互操作性尚不成熟稳定,暂无法在 Swift 中注册,此类应用应避免迁移 AppDelegate 到 Swift。

三、重大变更

  • 移除 Metro 中的 console.log() 流:为提升调试可靠性并匹配现代浏览器工具功能,移除了通过 Metro 的日志转发功能,转向仅使用 Chrome DevTools Protocol (CDP)。
  • 动画、布局与 JS 模块变更:原生循环动画在循环结束时不再发送 React 状态更新;ScrollView 中粘性头部的 position 会被正确考虑;移除 ReactFabricInternals 模块。
  • 原生模块与包变更:NativeModules 对象可用于在 JS 中加载 turbomodules;dev-middleware 要求框架指定相对于中间件主机的 serverBaseUrl。
  • API 与 UX 变更:从 AppRegistry 中移除 useConcurrentRoot 类型;从 NativeMethods TypeScript 定义中移除 refs 属性;从开发服务器关键命令中移除“run on iOS”和“run on Android”。
  • Android 与 iOS 特定变更:基于 Kotlin 2.0.21 构建 Android 部分 API;移除 iOS 上的多个 API,并替换为合适功能标志。

四、React 19 支持计划

React 19 已于 2024 年 12 月 6 日发布,但 React Native 0.77 分支已确定无法引入,将在 React Native 0.78 版本中集成。开发者可使用指定命令创建基于 React 19 的新应用进行尝试。

五、升级指南

对于现有项目,可使用 React Native Upgrade Helper 结合升级文档查看版本间代码变更。创建新项目可使用指定命令。Expo 用户需关注 Expo SDK 52 对 React Native 0.77 的支持。目前 0.77 为最新稳定版,0.74.x 已停止支持,React Native 团队计划近期发布 0.74 的最终停止更新说明。