RN 性能优化
按需加载: 导出模块使用属性getter动态require
使用Import语句导入模块,会自动执行所加载的模块。如果你有一个公共组件供业务方使用,例如:common.js
import A from './A';
import B from './B';
import C from './C';
export {
A,
B,
C
}
业务方想使用common.js中A模块,
import {A} from './common.js';
此时,虽然只想引用A模块,但实际B,C模块代码也被执行了。
注意:
如果模块本身使用ES5导出方式,例如module.exports = A,导出方式采用require('./A')引用。模块采用ES6导出方式,例如export default class B {} ,导出方式采用require('./B').default引用
假如A, B, C 都是es6 写法,上面可以优化为
module.exports = {
get A() {return(require('./A').default);},
get B() {return(require('./B').default);},
get C() {return(require('./C').default);},
};
业务方使用不变
懒加载
一般入口文件,会引入所有页面文件,但是我们首次打开APP的时候,只是需要其中一个即可,这样就会造成首页打开速度会受到影响
这样我们就需要使用懒加载,使得真正使用的时候,才被引入
使用ListView/FlatList 代替 ScrollView
这个是老生常谈的,长列表要使用List, 不能直接map
使用PureComponent代替 Component
PureComponent 组件会自己判断旧的props 、 state 和新的是否相同,相同的话,就不会再重新渲染(注意:这里是的比较是浅比较), 相当于实现了 shouldUpdateComponent;
有时候需要自己实现 shouldUpdateComponent,进行深比较props 、 state, 减少渲染次数,也要考虑业务以免更新不了。
ScrollView中内容过多, 根据偏移量设置渲染内容;
页面要渲染A,B,C,D,E 其中 D, E都在首屏外,可以假如滚动 100偏移,再开始渲染D, E, 这样做的好处就是减少刚进来时渲染的内存消耗,提升渲染速度;
RN 性能优化的更多相关文章
- RN性能优化(重新探索react吧)
最近做RN遇到了一些性能瓶颈,逼着自己不得不做一些优化 已经做过,或者尝试过得优化方案: 1.点击效果防止重复点击. 2.左右两边分别用两个异步栈进行更新,这样能让右边的缓慢不影响左边的更新. 3.I ...
- 【腾讯Bugly干货分享】跨平台 ListView 性能优化
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/FbiSLPxFdGqJ00WgpJ94yw 导语 精 ...
- MIS性能优化常见问题与方案(辅助项目组性能优化的总结贴)
最近帮忙公司的几个项目组进行了不同方面的性能优化,发现几个项目都出现了一些共性的问题.这里写一篇文章,总结一下这几类问题,以及其对应的解决方案.方便其它项目组参考. 常见问题一:打开页面非常慢,有 ...
- 数据库访问性能优化 Oracle
特别说明: 1. 本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2. 本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...
- React-Native性能优化点
shouldComponentUpdate 确保组件在渲染之后不需要再更新的,即静态组件,尽量在其中增加shouldComponentUpdate方法,防止二次消耗所产生的性能消耗 shouldCom ...
- PLSQL_性能优化系列01_Oracle Index索引
2014-06-01 Created By BaoXinjian
- (转)Db2 数据库性能优化中,十个共性问题及难点的处理经验
(转)https://mp.weixin.qq.com/s?__biz=MjM5NTk0MTM1Mw==&mid=2650629396&idx=1&sn=3ec17927b3d ...
- PLSQL_性能优化索引Index介绍(概念)
2014-06-01 BaoXinjian
- Oracle学习总结(8)—— 面向程序员的数据库访问性能优化法则
特别说明: 1. 本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2. 本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...
随机推荐
- 个人永久性免费-Excel催化剂功能第103波-批量打开多文件或多链接
有时简单的东西,却带来许多的便利,为了让大家可以记住并容易找寻到此功能,也将这么简单的功能归为一波,反正已经100+波了,也无需为了凑功能文章而故意罗列一些小功能带忽悠性地让人觉得很强大. 使用场景 ...
- C语言入门6-选择结构--f语句-switch
一. 什么是选择结构? 选择结构,也称为分支结构!! 选择结构就是根据 给定的判定条件,判断结果, 并根据 判断的结果 来控制程序的流程 (流程图中, 菱形框 是有来判断的 , ...
- Python字典排序
利用引出一个例子来理解 例如:比如使用Python字典排序,d={'a':1,'c':3,'b':2}按值升序排列,我们可以用sorted高阶函数或者用列表的.sort()方法.下面具体阐述两种排序方 ...
- 原生应用使用cordova并与h5应用分离
个人原创地址:https://www.jianshu.com/p/1ad536e76640 1.需求与使用场景 打开一个新页面,要求能够加载本地zip格式的h5应用,该应用使用了某些原生能力:能够 ...
- 【WPF】 InkCanvas 书写毛笔效果
首先贴出本文参考学习的文章吧. https://www.cnblogs.com/LCHL/p/9055642.html#4206298 感谢这位懒羊羊的代码和讲解(下简称羊博主),我在此基础上稍微加了 ...
- Java集合系列(三):HashSet、LinkedHashSet、TreeSet的使用方法及区别
本篇博客主要讲解Set接口的三个实现类HashSet.LinkedHashSet.TreeSet的使用方法以及三者之间的区别. 注意:本文中代码使用的JDK版本为1.8.0_191 1. HashSe ...
- 用python绘制漂亮的图形
先看效果,没有用任何绘图工具,只是运行了一段python代码. 代码如下: _ = ( 255, lambda V ,B,c :c and Y(V*V+B,B, c -1)if(abs(V)<6 ...
- .net core 基于 IHostedService 实现定时任务
.net core 基于 IHostedService 实现定时任务 Intro 从 .net core 2.0 开始,开始引入 IHostedService,可以通过 IHostedService ...
- UR机器人通信--上位机通信(python)
一.通信socket socket()函数 Python 中,我们用 socket()函数来创建套接字,语法格式如下: socket.socket([family[, type[, proto]]]) ...
- GridView 使用详解
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...