React Native FlatList优化
众所周知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优化相关推荐
- 如何构建具有实时搜索功能的React Native FlatList
by Vikrant Negi 通过Vikrant Negi 如何构建具有实时搜索功能的React Native FlatList (How to build a React Native FlatL ...
- React Native性能优化总结
React Native开源已经接近2年时间,京东.携程.58同城等互联网公司都在使用,公司于今年也开始使用,并推广到各个新项目.本文重点分享我们遇到的一些问题以及优化方案. 一.为什么会引入Reac ...
- React Native 启动速度优化——Native 篇(内含源码分析)
Web 开发有一个经典问题:「浏览器中从输入 URL 到页面渲染的这个过程中都发生了什么?」 据我考据这个问题起码有十年历史了.在日新月异学不动的前端圈子里,这个问题能一直被问,就是因为因为它是个非常 ...
- React Native FlatList和SectionList列表组件
FlatList 之前使用的组件是ListView,当时要添加一个下拉刷新,上拉加载的功能,所以对ListView做了一些封装,但是后来看官方文档,不建议再使用ListView,因为效率问题,做过An ...
- react native FlatList
高性能的列表组件 import React,{Component} from 'react'; import {View,Text,FlatList} from 'react-native';expo ...
- React Native FlatList属性及使用详情
FlatList属性及用法 FlatList属性 FlatList用法 FlatList属性 data:列表数据 numColumns:列数 组件内元素必须是等高的,无法支持瀑布流布局 renderI ...
- react native FlatList 使用详解
高性能的简单列表组件,支持下面这些常用的功能: 完全跨平台. 支持水平布局模式. 行组件显示或隐藏时可配置回调事件. 支持单独的头部组件. 支持单独的尾部组件. 支持自定义行间分隔线. 支持下拉刷新. ...
- react native FlatList遇到的问题
1.FlatList可以渲染多条数据,ListHeaderComponent={header组件},如果想让header组件带有粘性,就用stickyHeaderIndices={[0]},如果想有好 ...
- 【react native】Flatlist实现上拉滚动加载
参考博客:React Native FlatList上拉加载.FlatList enum FooterType {Null = 0,NoData = 1,LoadingData = 2, }expor ...
最新文章
- 马云:腾讯不是阿里要打败的对手,是同为社会创造价值的伴侣
- 裁员这件事,谁也没有鲍尔默、纳德拉这两届微软CEO演绎的淋漓尽致
- messagebox 全部使用_「一」Windows API 零门槛编程指南——MessageBox
- 数据库崩溃后对redo log的使用
- PTA 三足鼎立 (lower_bound()+upper_bound())
- mysql字段编码转换_mysql字符集编码转换
- python书籍排行榜前十名_学习Python,这些书你看过几本?
- 假期读书|《步履不停》读后感
- Asp.net输出Excel文件并且下载该文件以及某些细节问题解决
- Windows Server 2008 R2 install Visual Studio 2015 failed
- 启动工程Ehcache报错
- spring使用之旅 ---- bean的装配
- wince 德赛西威2413_德赛西威NAV230凯立德2016春季专版C2134-C7M07-3921J0S
- 使用adb命令修改build.prop文件
- 让行内元素转化为块元素的三种方法与特点详解
- win10应用已被java安全阻止,win10系统不能运行java提示“应用程序已被安全设置被阻止”的图文方法...
- 数据结构教程(第五版 李春葆 上机实验题3 验证性实验)
- 自制AVA数据集工具/slowfast模型训练数据集制作
- 黑莓管理器6.0_BlackBerry Java SDK 7.0 Beta发布
- python飞机大战实验报告心得_Python学习之路「第七篇」-Pygame之飞机大战1
热门文章
- win7计算机电源设置在哪里设置,windows7电源管理设置在哪里_win7的电源管理在哪里打开-win7之家...
- 【技术分享】历经16年猪八戒网如何成功实现双活流量架构
- python打乱迭代器_嗯哼python随机(迭代器,正则,函数自定义,异常处理)
- 无线传感器网络:网络层
- 困惑我们人生的60个问题的答案--言简意赅的开心果,说的多好啊
- 【项目小结】某B视频网站的爬虫实践
- 汇总:20个 Linux 服务器性能调优技巧
- Linux性能优化方案
- C语言丨关键字union的定义和使用
- Java设置Excel打印一页宽_Java Excel页面设置:页边距、页面大小/方向/背景、缩放比例、打印范围...