react native FlatList 使用详解

来源:互联网 发布:点滴记忆源码 编辑:程序博客网 时间:2024/06/07 18:09

高性能的简单列表组件,支持下面这些常用的功能:

  • 完全跨平台。
  • 支持水平布局模式。
  • 行组件显示或隐藏时可配置回调事件。
  • 支持单独的头部组件。
  • 支持单独的尾部组件。
  • 支持自定义行间分隔线。
  • 支持下拉刷新。
  • 支持上拉加载。

如果需要分组/类/区(section),请使用 SectionList

属性:

ItemSeparatorComponent:分割线组件,
ListFooterComponent:结尾组件
ListHeaderComponent:头组件
data:列表数据
horizontal:设置为true则变为水平列表。
numColumns:列数 组件内元素必须是等高的,无法支持瀑布流布局
columnWrapperStyle:numColumns大于1时,设置每行的样式
getItemLayout:如果我们知道行高可以用此方法节省动态计算行高的开销。
refreshing:是否正在加载数据
onRefresh:设置此属性需要一个标准的 RefreshControl 控件,刷新数据
renderItem:渲染每个组件
onViewableItemsChanged:当一个新的Item渲染或者隐藏 的时候调用此方法。参数:info: {viewableItems: Array, changed: Array} viewableItems:当前可见的Item,changed:渲染或者隐藏的Item。
scrollToEnd({params?: ?{animated?: ?boolean}}):滚动到末尾,如果不设置getItemLayout属性的话,可能会比较卡。
scrollToIndexparams: {animated?: ?boolean, index: number, viewPosition?: number}:滚动到制定的位置
scrollToOffset(params: {animated?: ?boolean, offset: number}):滚动到指定的偏移的位置。

Demo:

import React, {Component} from 'react';import {    StyleSheet,    View,    FlatList,    Text,    Button,} from 'react-native';var ITEM_HEIGHT = 100;export default class FlatListDemo extends Component {    _flatList;    _renderItem = (item) => {        var txt = '第' + item.index + '个' + ' title=' + item.item.title;        var bgColor = item.index % 2 == 0 ? 'red' : 'blue';        return <Text style={[{flex:1,height:ITEM_HEIGHT,backgroundColor:bgColor},styles.txt]}>{txt}</Text>    }    _header = () => {        return <Text style={[styles.txt,{backgroundColor:'black'}]}>这是头部</Text>;    }    _footer = () => {        return <Text style={[styles.txt,{backgroundColor:'black'}]}>这是尾部</Text>;    }    _separator = () => {        return <View style={{height:2,backgroundColor:'yellow'}}/>;    }    render() {        var data = [];        for (var i = 0; i < 100; i++) {            data.push({key: i, title: i + ''});        }        return (            <View style={{flex:1}}>                <Button title='滚动到指定位置' onPress={()=>{                    //this._flatList.scrollToEnd();                    //this._flatList.scrollToIndex({viewPosition:0,index:8});                    this._flatList.scrollToOffset({animated: true, offset: 2000});                }}/>                <View style={{flex:1}}>                    <FlatList                        ref={(flatList)=>this._flatList = flatList}                        ListHeaderComponent={this._header}                        ListFooterComponent={this._footer}                        ItemSeparatorComponent={this._separator}                        renderItem={this._renderItem}                        //numColumns ={3}                        //columnWrapperStyle={{borderWidth:2,borderColor:'black',paddingLeft:20}}                        //horizontal={true}                        //getItemLayout={(data,index)=>(                        //{length: ITEM_HEIGHT, offset: (ITEM_HEIGHT+2) * index, index}                        //)}                        //onEndReachedThreshold={5}                        //onEndReached={(info)=>{                        //console.warn(info.distanceFromEnd);                        //}}                        //onViewableItemsChanged={(info)=>{                        //console.warn(info);                        //}}                        data={data}>                    </FlatList>                </View>            </View>        );    }}const styles = StyleSheet.create({    txt: {        textAlign: 'center',        textAlignVertical: 'center',        color: 'white',        fontSize: 30,    }});

效果图:
这里写图片描述

这2个属性暂时没研究明白,希望大家在评论里说下。

onEndReached:在android环境下不是滑动到底部出发
onEndReachedThreshold:

github下载地址

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孕妇6个月胃酸怎么办 孕早期胎盘早剥怎么办 孕妇晕车怎么办最有效方法 怀孕了受凉胃疼怎么办 怀孕4个月胎位低怎么办 6个月胎位低怎么办 7个多月了胎位低怎么办 瑜伽按摩球破了怎么办 孕妇吐完胸口疼怎么办 孕25周胸口堵怎么办呢 孕期没做过产检怎么办 宝宝的泪囊堵塞怎么办 瑜伽球塞子丢了怎么办 瑜伽球塞子没了怎么办 练阴瑜伽是想睡怎么办 肠道引流拨断了怎么办 瑜伽动作做不到位怎么办 胃肠吸收不好一直长不胖怎么办 小孩把泡泡糖吞进肚子怎么办 练习瑜伽又?带硬怎么办 天气太热没有空调怎么办 腹股沟岔气怎么办才能快点好 瑜伽馆不给退卡怎么办 膝盖总是凉凉的怎么办 练阴瑜伽腿麻怎么办 瑜伽垫在地板滑怎么办 艾灸后后背发凉怎么办 床上老是有小蜈蚣怎么办 早晚出去胳膊脚觉得凉怎么办 腿凉感觉冒凉气怎么办 冬天腿被冻夏天发酸发凉怎么办 宿舍一楼虫子多怎么办 有虫子在咬床板怎么办 床板上的虫咬了怎么办 住的房间有臭虫怎么办 租的房子有臭虫怎么办 瑜伽垫放地上脏怎么办 瑜伽垫和地面滑怎么办 练瑜伽时瑜伽垫全是汗水怎么办 车钥匙放洗衣机洗了怎么办 瑜伽垫边上掉渣怎么办