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

打印 上一主题 下一主题

主题 998|帖子 998|积分 2996

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

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

2025 年 1 月 21 日,React Native 0.77 正式发布,此版本带来诸多新特性、对 Android 的支持增强、社区模板更新以及一些紧张变动。
一、新特性亮点

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


  • display: contents 简化布局逻辑:该属性使元素自身在布局布局中“消散”,但子元素仍正常渲染,就像直接作为父元素的子元素一样。在构建需处理事故的包装组件或与 ShadowTree 交互场景中,可在不影响布局的前提下为子元素应用样式。例如,构建一个当内部组件被按下时弹出提示的包装组件,利用该属性可制止添加多余布局框,确保提示仅在目标子元素区域触发。
  • boxSizing 准确控制元素尺寸盘算:定义了元素尺寸属性(如 width、height 等)的盘算方式,支持 border-box 和 content-box 两种值,默认值为 border-box。与网页默认值不同,此默认设置是为保证向后兼容性。如在设置了 padding 和 borderWidth 的 View 中,利用不同 boxSizing 值会使尺寸盘算包罗或不包罗边框与内边距,开发者可据此机动调整布局尺寸逻辑。
  • mixBlendMode 与 isolation 实现元素颜色混合控制:mixBlendMode 属性允许元素在堆叠上下文中与其他元素混合颜色,其取值对应多种混合模式(如 multiply、screen 等),可实现丰富视觉效果。同时新增 isolation 属性,设置为 isolate 可使 View 形成独立堆叠上下文,防止具有 mixBlendMode 的子元素过分混合颜色,让开发者对颜色混合范围有更精细掌控。
  • Outline props 突出元素外貌:引入 outlineWidth、outlineStyle、outlineSpread 和 outlineColor 等外貌属性,与 border 属性类似,但外貌绘制在边框盒周围,可在不影响布局的环境下突出元素,为样式设计提供更多选择。
(二)Android 支持增强


  • 适配 Android 15 强制边缘到边缘显示:在 targetSdk 为 35 构建应用时,Android 15 会强制应用全屏显示。若未妥善处理可能破坏 UI,利用 react-native-safe-area-context 库可自动适配此厘革,开发者需关注并确保应用在新特性下正常显示。
  • 支持 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 应用的社区模板编程语言从 Objective-C 迁移到 Swift,用单个 AppDelegate.swift 文件更换了原来的 main.m、AppDelegate.h 和 AppDelegate.mm 文件。但仍支持 Objective-C++ 变体,新项目默认利用 Swift,开发者也可按需迁移回 Objective-C。需注意,若应用有 C++ 编写的本地模块,因 Swift 与 C++ 互利用性尚不成熟稳定,暂无法在 Swift 中注册,此类应用应制止迁移 AppDelegate 到 Swift。
三、庞大变动

(一)移除 Metro 中的 console.log() 流

为提升调试可靠性并匹配当代浏览器工具功能,移除了通过 Metro 的日记转发功能(0.76 版本已弃用),转向仅利用 Chrome DevTools Protocol (CDP)。开发者可利用 React Native DevTools 的控制台面板查看 JS 日记,也可通过第三方扩展(如 Expo Tools、Radon IDE)将 VS Code 连接为 CDP 调试器,但 React 团队暂不直接支持这些集成,正在开发第一方 VS Code 支持功能,同时 Expo CLI 仍提供日记流功能。
(二)其他变动


  • 动画方面:原生循环动画在循环结束时不再发送 React 状态更新。
  • 布局方面:ScrollView 中粘性头部的 position 会被精确考虑,绝对定位行为更合规。
  • JS 模块方面:移除 ReactFabricInternals 模块。
  • 原生模块方面:NativeModules 对象可用于在 JS 中加载 turbomodules,增强了与 Turbo Native Modules 的兼容性。
  • 包方面:dev-middleware 要求框架指定相对于中心件主机的 serverBaseUrl。
  • API 变动方面:从 AppRegistry 中移除 useConcurrentRoot 类型,从 NativeMethods TypeScript 定义中移除 refs 属性。
  • UX 变动方面:从开发服务器关键命令中移除“run on iOS”和“run on Android”。
  • Android 特定变动:基于 Kotlin 2.0.21 构建,部分 API 举行了空值处理、重命名或移除限制访问等利用,如调整 ReadableArray 非原始类型 getter 为可选、重命名 DevSupportManagerBase.getCurrentContext 等,同时一些内部包和类不再可访问。
  • iOS 特定变动:移除 RCTConstants.RCTGetMemoryPressureUnloadLevel 等多个 API,更换 UseTurboModuleInteropForAllTurboModules 为合适功能标志,将部分 CGColorRef 利用更换为 UIColor,RCTAppDelegate 加载第三方依赖需利用 RCTDependencyProvider,CocoaPods 设置第三方依赖 C++ 版本制止编译题目。
四、React 19 支持筹划

React 19 已于 2024 年 12 月 6 日发布,但 React Native 0.77 分支已确定无法引入,将在 React Native 0.78 版本中集成。开发者可利用 npx @react-native-community/cli init YourReact19App --version 0.78.0-rc.0 命令创建基于 React 19 的新应用举行实验。
五、升级指南

对于现有项目,可利用 React Native Upgrade Helper 联合升级文档查看版本间代码变动。创建新项目可利用 npx @react-native-community/cli@latest init MyProject --version latest 命令。Expo 用户需关注 Expo SDK 52 对 React Native 0.77 的支持(具体更新说明将在 Expo 博客发布)。目前 0.77 为最新稳定版,0.74.x 已制止支持,React Native 团队筹划近期发布 0.74 的最终制止更新说明。
此版本浩繁新特性和改进为 React Native 应用开发带来更多功能与性能提升机会,开发者需根据项目环境妥善处理变动和升级事宜。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用多少眼泪才能让你相信

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表