React Native 优化指南
⚛️

React Native 优化指南

Tags
React
前端
Published
August 4, 2022
Author
 
React Native 是一个快速构建跨平台应用的框架,但是在应用的开发过程中,我们也需要考虑一些性能问题。本文将介绍一些 React Native 的优化技巧,让你的应用运行更加流畅。

减少 Re-Render

React Native 中的 Re-Render 是指组件在状态变化后重新渲染的过程。它在应用运行时是非常频繁的,因此优化它可以极大地提高应用性能。以下是一些减少 Re-Render 的方法:
  • shouldComponentUpdate
  • PureComponent
  • React.memo
  • useMemo
  • useCallback
  • 避免渲染时创建新对象和函数

减少渲染压力

除了减少 Re-Render,我们也需要避免过多的渲染压力。以下是一些减少渲染压力的方法:
  • 使用 Fragment 避免多层嵌套
  • 避免过度绘制,例如避免重复设置背景、半透明等

图片优化相关

在 React Native 应用中,图片的优化也非常重要。以下是一些图片优化的方法:
  • Image 缓存配置
  • 使用 resizeMethod 设置图片尺寸来解决 Android 内存暴涨问题
  • 根据机型分辨率加载不同尺寸的图片

动画性能

在 React Native 应用中,动画也是一个常见的性能问题。以下是一些动画性能优化的方法:
  • 开启原生动画(只能用于可预测动画)
  • 使用 setNativeProps 来避免 React 重绘
  • 使用 InteractionManager.runAfterInteractions 执行重任务(类似于 raf)

长列表

在 React Native 应用中,长列表也是一个常见的性能问题。以下是一些长列表的优化方法:
  • 合理使用 key
  • 避免使用匿名函数作为 renderItem
  • 使用虚拟列表
  • 使用 getItemLayout 来预设置高度,从而省去初始化高度计算的开销

工具

在优化 React Native 应用时,使用一些工具也是非常有帮助的。以下是一些常见的工具:
  • React Devtool
  • Android Profiler
  • iOS Simulator Debug

新架构 Fabric

Fabric 是 React Native 的新架构,它旨在提高应用的性能和稳定性。它使用了一种名为 JSI(JavaScript Interface)的新技术,将 JavaScript 代码与原生代码紧密结合,从而避免了 JSBridge 的性能瓶颈。在 Fabric 中,JavaScript 代码可以直接访问原生模块和 UI 线程,从而提高了应用的响应速度和流畅度。
在 Fabric 中,React Native 应用的整个渲染流程都得到了优化。例如,在旧版 React Native 中,每个组件都需要通过 JSBridge 进行通信,这会导致性能瓶颈。而在 Fabric 中,所有通信都是在原生线程中进行的,这极大地提高了渲染速度。此外,Fabric 还支持增量渲染,可以在保持 UI 响应的同时,将渲染工作分散到多个帧中。
Fabric 还提供了一些新的功能,例如动态界面更新和增量代码推送。这些功能可以帮助开发人员在保持应用稳定性的同时,快速地更新应用的界面和代码。
要使用 Fabric,需要将应用升级到 React Native 0.61 或更高版本,并将 useFabric 标志设置为 true。有关更多信息,请参见 React Native 的官方网站。