React Native 0.77 发布:更强的样式支持与性能优化

React Native 0.77 正式发布!此次版本带来了多项重要改进,包括样式功能的增强、Android 平台的性能优化以及项目模板的升级。这一版本的核心目标是提升开发效率,同时确保在不同平台上的兼容性。接下来,我们来看看这次更新中的亮点内容。


主要更新内容 ✨

  1. 全新 CSS 特性支持 :新增对 display: contentsboxSizingmixBlendModeoutline 等属性的支持。

  2. Android 性能提升:支持 Android 15 强制的全屏边到边显示,以及未来设备上的 16KB 内存页面优化。

  3. CLI 与模板更新 :废弃了 react-native init,推荐使用更现代的项目初始化工具。

  4. iOS 项目默认使用 Swift:新创建的 iOS 项目现在默认采用 Swift 编写,提高性能与兼容性。

  5. 关键改动与废弃功能 :包括 Metro 中 console.log 流日志功能的移除及原生动画行为的调整。


1. 全新 CSS 特性支持

1.1 display: contents

该属性允许元素从视觉上移除自身的布局影响,但保留其子元素。这非常适合用来创建不会干扰布局的包装组件。

示例

go 复制代码
function Alerting({ children }) {
  return (
    <View
      style={{ display: 'contents' }}
      onPointerDown={() => alert('Hello World!')}>
      {children}
    </View>
  );
}

在这个例子中,Alerting 组件包裹了子元素,但不会引入额外的布局盒,适合用于更灵活的布局设计。

1.2 boxSizing

React Native 现在支持 content-boxborder-box 两种盒模型,与 Web 标准保持一致。但为了兼容性,默认仍使用 border-box

示例

go 复制代码
<View style={{ 
  width: 100, 
  padding: 20, 
  borderWidth: 10, 
  boxSizing: 'content-box' 
}} />

这个属性使得在处理边距和边框时更具控制力。

1.3 mixBlendMode

新增的 mixBlendMode 属性允许实现复杂的颜色混合效果,使前景和背景颜色动态融合。这为设计独特的界面提供了更多可能性。

示例

go 复制代码
<View style={{ 
  backgroundColor: 'red', 
  mixBlendMode: 'multiply' 
}} />

支持的混合模式包括 multiplyscreenoverlay 等,开发者可以轻松创建丰富的视觉效果。

1.4 Outline 属性

React Native 0.77 引入了 outlineWidthoutlineStyleoutlineColor 等属性,它们类似于边框属性,但不会影响布局,适用于创建元素的高亮状态。

示例

go 复制代码
<View style={{ 
  outlineWidth: 2, 
  outlineColor: 'blue', 
  outlineStyle: 'dashed' 
}} />

这为焦点状态的样式设计提供了新的选择。


2. Android 平台优化

2.1 支持 Android 15 全屏显示

新版支持 Android 15 强制边到边显示的要求,确保在 API 35 及以上的设备上应用布局无缝适配。如果你使用了 react-native-safe-area-context,应用将自动处理这些调整,否则需要手动更新布局以适配。

2.2 16KB 页面支持

React Native 0.77 针对未来的 Android 设备进行了 16KB 内存页面的适配工作。这一优化不仅提高了兼容性,也为性能提升奠定了基础。


3. CLI 和模板更新

废弃 react-native init

react-native init 已被废弃,建议改用以下现代化工具:

  • 使用 Expo 初始化项目:npx create-expo-app

  • 使用社区 CLI:npx @react-native-community/cli init

这种调整简化了项目创建过程,也更符合当前开发工具的趋势。


4. iOS 项目默认使用 Swift

新创建的 iOS 项目现在默认采用 Swift 语言,而非 Objective-C。以下是更新后的 AppDelegate 示例:

go 复制代码
import UIKit
import React

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    var dependencyProvider = RCTAppDependencyProvider()

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        return true
    }
}

这项更新减少了代码模板中的冗余,同时提升了性能,并为 Swift 框架的集成带来了更多便利。


5. 关键改动与废弃功能

  • 移除 Metro 中的 console.log 流日志功能:开发者需要改用 Chrome DevTools Protocol(CDP)或第三方工具(如 Expo Tools)。

  • 更稳定的滚动视图头部粘性布局

  • 改进绝对定位的布局一致性

  • 支持 TurboModules,提高原生模块性能


总结

React Native 0.77 为开发者提供了更强大的工具和更高效的性能支持。从 CSS 新特性到 Android 的兼容优化,这些改进让跨平台开发更接近 Web 标准,同时为未来设备的适配提供保障。在升级时,需留意破坏性改动,尤其是日志处理方式的变化和 iOS 模板的更新。

赶快升级到 React Native 0.77,体验这些新特性吧!

最后:

React Hook 深入浅出

CSS技巧与案例详解

vue2与vue3技巧合集

VueUse源码解读

相关推荐
shoa_top1 小时前
JavaScript 数组方法总结
javascript
JiangJiang1 小时前
🚀 Vue 人如何玩转 React 自定义 Hook?从 Mixins 到 Hook 的华丽转身
前端·react.js·面试
鱼樱前端1 小时前
让人头痛的原型和原型链知识
前端·javascript
lianghj1 小时前
前端高手必备:深度解析高频场景解决方案与性能优化实战
前端·javascript·面试
OpenIM2 小时前
Electron Demo 的快速编译与启动
前端·javascript·electron
拿我格子衫来2 小时前
图形编辑器基于Paper.js教程27:对图像描摹的功能实现,以及参数调整
开发语言·前端·javascript·图像处理·编辑器·图形渲染
末日的狂欢姐2 小时前
AXUI - 极致原生体验的零依赖的国产 Web UI 框架,欢迎体验和共建!
javascript·前端框架·vue·网站建设·ui设计
取个好名称2 小时前
在线查看【免费】 txt, xml(渲染), md(渲染), java, php, py, js, css 文件格式网站
xml·javascript·php
日日行不惧千万里2 小时前
Node.js和js到底什么关系
开发语言·javascript·node.js
天狗精灵2 小时前
狗教我React—— 5 种组件提取思路与实践
前端·react.js·设计模式