众所周知React Native刷新控件一般都是采用setState,对于FlatList来说就要想办法减少item的渲染,采用shouldComponentUpdate自己定义什么情况下执行刷新,有时候可能会有这样的需求,指定某个item执行刷新,在React Native里面没有可以获取指定item的方式,只能在数据上做考虑,具体操作如下:

定义Item需要的数据源

export class ItemData{constructor(){//指定某种状态this.isChanged = false}
}

Item中增加业务需求判断,比如列表跳转详情,回调修改当前选择的列表Item数据,简易代码如下:

Item.js

//定义外部传递属性
static propTypes = {//数据data:PropTypes.object.isRequired,//是否改变isChanged:PropTypes.bool,
}
//定义外部属性默认值
static defaultProps = {isChanged:false,
}
shouldComponentUpdate(nextProps, nextState) {//判断什么情况下刷新return this.props.isChanged != nextProps.isChanged;
}

Main.js

//某种需要刷新item的场景
onChangeValueHandler = (index) => {//实际业务代码需要自己来判断let item = this.state.listDatas[index];item.isChanged = !item.isChanged;this.setState({listDatas:.....})
}
//渲染item 并以props的属性传入组件
onRenderItem = ({itemData}) => {return (<Item data={itemData} isChanged={itemData.isChanged}></Item>)
}

shouldComponmentUpdate里面可以根据业务的需求进行相关逻辑判断,最终都是以减少渲染次数达到优化。

React Native FlatList优化相关推荐

  1. 如何构建具有实时搜索功能的React Native FlatList

    by Vikrant Negi 通过Vikrant Negi 如何构建具有实时搜索功能的React Native FlatList (How to build a React Native FlatL ...

  2. React Native性能优化总结

    React Native开源已经接近2年时间,京东.携程.58同城等互联网公司都在使用,公司于今年也开始使用,并推广到各个新项目.本文重点分享我们遇到的一些问题以及优化方案. 一.为什么会引入Reac ...

  3. React Native 启动速度优化——Native 篇(内含源码分析)

    Web 开发有一个经典问题:「浏览器中从输入 URL 到页面渲染的这个过程中都发生了什么?」 据我考据这个问题起码有十年历史了.在日新月异学不动的前端圈子里,这个问题能一直被问,就是因为因为它是个非常 ...

  4. React Native FlatList和SectionList列表组件

    FlatList 之前使用的组件是ListView,当时要添加一个下拉刷新,上拉加载的功能,所以对ListView做了一些封装,但是后来看官方文档,不建议再使用ListView,因为效率问题,做过An ...

  5. react native FlatList

    高性能的列表组件 import React,{Component} from 'react'; import {View,Text,FlatList} from 'react-native';expo ...

  6. React Native FlatList属性及使用详情

    FlatList属性及用法 FlatList属性 FlatList用法 FlatList属性 data:列表数据 numColumns:列数 组件内元素必须是等高的,无法支持瀑布流布局 renderI ...

  7. react native FlatList 使用详解

    高性能的简单列表组件,支持下面这些常用的功能: 完全跨平台. 支持水平布局模式. 行组件显示或隐藏时可配置回调事件. 支持单独的头部组件. 支持单独的尾部组件. 支持自定义行间分隔线. 支持下拉刷新. ...

  8. react native FlatList遇到的问题

    1.FlatList可以渲染多条数据,ListHeaderComponent={header组件},如果想让header组件带有粘性,就用stickyHeaderIndices={[0]},如果想有好 ...

  9. 【react native】Flatlist实现上拉滚动加载

    参考博客:React Native FlatList上拉加载.FlatList enum FooterType {Null = 0,NoData = 1,LoadingData = 2, }expor ...

最新文章

  1. 马云:腾讯不是阿里要打败的对手,是同为社会创造价值的伴侣
  2. 裁员这件事,谁也没有鲍尔默、纳德拉这两届微软CEO演绎的淋漓尽致
  3. messagebox 全部使用_「一」Windows API 零门槛编程指南——MessageBox
  4. 数据库崩溃后对redo log的使用
  5. PTA 三足鼎立 (lower_bound()+upper_bound())
  6. mysql字段编码转换_mysql字符集编码转换
  7. python书籍排行榜前十名_学习Python,这些书你看过几本?
  8. 假期读书|《步履不停》读后感
  9. Asp.net输出Excel文件并且下载该文件以及某些细节问题解决
  10. Windows Server 2008 R2 install Visual Studio 2015 failed
  11. 启动工程Ehcache报错
  12. spring使用之旅 ---- bean的装配
  13. wince 德赛西威2413_德赛西威NAV230凯立德2016春季专版C2134-C7M07-3921J0S
  14. 使用adb命令修改build.prop文件
  15. 让行内元素转化为块元素的三种方法与特点详解
  16. win10应用已被java安全阻止,win10系统不能运行java提示“应用程序已被安全设置被阻止”的图文方法...
  17. 数据结构教程(第五版 李春葆 上机实验题3 验证性实验)
  18. 自制AVA数据集工具/slowfast模型训练数据集制作
  19. 黑莓管理器6.0_BlackBerry Java SDK 7.0 Beta发布
  20. python飞机大战实验报告心得_Python学习之路「第七篇」-Pygame之飞机大战1

热门文章

  1. win7计算机电源设置在哪里设置,windows7电源管理设置在哪里_win7的电源管理在哪里打开-win7之家...
  2. 【技术分享】历经16年猪八戒网如何成功实现双活流量架构
  3. python打乱迭代器_嗯哼python随机(迭代器,正则,函数自定义,异常处理)
  4. 无线传感器网络:网络层
  5. 困惑我们人生的60个问题的答案--言简意赅的开心果,说的多好啊
  6. 【项目小结】某B视频网站的爬虫实践
  7. 汇总:20个 Linux 服务器性能调优技巧
  8. Linux性能优化方案
  9. C语言丨关键字union的定义和使用
  10. Java设置Excel打印一页宽_Java Excel页面设置:页边距、页面大小/方向/背景、缩放比例、打印范围...