FlatList的一些优化操作

  1. PureComponent
    ItemComponent使用PureConponent
    当组件更新时,如果组件的 props 和 state 都没发生改变, render 方法就不会触发,省去 Virtual DOM 的生成和比对过程,达到提升性能的目的。具体就是 React 自动帮我们做了一层浅比较,shallowEqual 会比较 Object.keys(state | props) 的长度是否一致,每一个 key 是否两者都有,并且是否是一个引用,也就是只比较了第一层的值,深层的嵌套数据是对比不出来的。来源于 这里

  2.  keyExtractor={(item) => item.id} 
    

    避免更新序列之后,有移动的参数,从而造成整体的增删操作,如果有id,即可判断出数量是否有改变,直接移动即可,当然这个是必须的。

  3.  shouldComponentUpdate() {
         return this.state.update;
     }
    

    在需要的时候才去刷新,根据需求或者业务去控制。

  4. Item上的图片,在滑动时不要去加载,而是采用占位图。

  5.  getItemLayout={(data, index) => ({length: size(121), offset: size(121) * index, index})
    

    (来至文档)getItemLayout是一个可选的优化,用于避免动态测量内容尺寸的开销,不过前提是你可以提前知道内容的高度。如果你的行高是固定的,getItemLayout用起来就既高效又简单,如果使用了ItemSeparatorComponent,要加上那个差值(120+1)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容