PureComponent
ItemComponent使用PureConponent
当组件更新时,如果组件的 props 和 state 都没发生改变, render 方法就不会触发,省去 Virtual DOM 的生成和比对过程,达到提升性能的目的。具体就是 React 自动帮我们做了一层浅比较,shallowEqual 会比较 Object.keys(state | props) 的长度是否一致,每一个 key 是否两者都有,并且是否是一个引用,也就是只比较了第一层的值,深层的嵌套数据是对比不出来的。来源于 这里-
keyExtractor={(item) => item.id}
避免更新序列之后,有移动的参数,从而造成整体的增删操作,如果有id,即可判断出数量是否有改变,直接移动即可,当然这个是必须的。
-
shouldComponentUpdate() { return this.state.update; }
在需要的时候才去刷新,根据需求或者业务去控制。
Item上的图片,在滑动时不要去加载,而是采用占位图。
-
getItemLayout={(data, index) => ({length: size(121), offset: size(121) * index, index})
(来至文档)getItemLayout是一个可选的优化,用于避免动态测量内容尺寸的开销,不过前提是你可以提前知道内容的高度。如果你的行高是固定的,getItemLayout用起来就既高效又简单,如果使用了ItemSeparatorComponent,要加上那个差值(120+1)。
FlatList的一些优化操作
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 目前,react组件有三种写法,分别是es5的createClass写法,es6的class写法,以及statel...
- 相信做过微信小程序的都知道,官方给出的微信web开发工具上根本就无法加载node_modules包,即使可以加载,...