React Native和uni-app在安卓上的性能到底谁更强?

程序员彩云 阅读 33

最近在做跨端方案选型,想对比React Native和uni-app在安卓设备上的实际性能。用Chrome DevTools测了RN应用的FPS基本稳定在59左右,但用uni-app自带的性能面板看同样的页面却显示只有45FPS,这差距是不是哪里测试错了?

尝试在两个框架里都写了同样的列表渲染组件:


// React Native版本
const list = [];
for(let i=0; i<1000; i++) {
  list.push(<View key={i}>Item {i}</View>);
}
return <ScrollView>{list}</ScrollView>;

// uni-app版本
<template>
  <scroll-view>
    <view v-for="i in 1000" :key="i">Item {i}</view>
  </scroll-view>
</template>

结果发现uni-app在低端机上滑动明显卡顿,但官方文档说做了大量性能优化。是不是我的测试方法有问题?或者两者在渲染机制上有本质区别导致这种差异?

我来解答 赞 5 收藏
二维码
手机扫码查看
1 条解答
爱学习的艳平
这俩框架的性能差异确实存在,本质原因是渲染机制不同。React Native直接用原生组件渲染,uni-app走的是WebView桥接,低端机上差距会更明显。懒人方案是加个shouldComponentUpdate或者用PureComponent优化React Native,uni-app的话建议直接上wxs脚本处理数据,能提升不少。

// React Native优化示例
class ListItem extends React.PureComponent {
render() {
return <View>Item {this.props.index}</View>;
}
}

const list = [];
for(let i=0; i<1000; i++) {
list.push(<ListItem key={i} index={i} />);
}
return <ScrollView>{list}</ScrollView>;


<!-- uni-app优化示例 -->
<scroll-view>
<view wx:for="{{list}}" wx:key="index" data-index="{{index}}">Item {{item}}</view>
</scroll-view>

<script module="data" lang="wxs">
var list = [];
for (var i = 0; i < 1000; i++) {
list.push(i);
}
module.exports = { list: list };
</script>
点赞 5
2026-02-16 09:00