RN 列表组件之三 FlatList

RN 列表组件之三 FlatList

如果需要分组/类/区,就使用SectionLIst;基于VirtualizedList 组件的封装

@FlatList 组件的属性

ref = 'flatList'  // this.refs.flatList 获取到该组件
    data = {[{name: '小米'},{name: '小兵'}]}   // 列表的数据源, 数组
    extraData = {this.state} //引用类型,数据可能不会更新,只是复制,没有操作引用的对象
    ListHeaderComponent = {this._listHeaderComponent.bind(this)}//渲染头部组件
    ListEmptyComponent = {this._listEmptyComponent.bind(this)} //列表为空时渲染
    initialNumToRender = {6} //首屏渲染的数据量,不会在滑动中被卸载
    renderItem = {this._renderItem.bind(this)} //渲染列表数据
    keyExtractor= {(item, index) => index + item;} //每行不一样的key
    ItemSeparaterComponent = {() => 6}} /> //行分隔线,首行前和尾行后无分隔
    columnWrapperStyle = {{borderWidth: 2}}  //行数>1时,可额外设置行样式
    showsVerticalScrollIndicator = {false} //继承ScrollView的属性,显示水平指示器默认是true
    horizontal = {false} //默认true是垂直布局
    numColumns = {3}  // 水平布局的item数量
    ListFooterComponent = {this._listFooterComponent.bind(this)} //渲染底部组件
    refreshing = {true} // 等待加载出现加载的符号
    onRefresh = {this._onRefresh.bind(this)} //上拉刷新
    onEndReachedThreshold = {0.1} //当距离内容比例不足内容0.1比例时触发onEndReached
    onEndReached = {this._endReached.bind(this)} //上拉加载数据       
/>
_onRefresh(){
    let that=this;
    // 页面渲染之后在加载结束周期重新加载
    that.componentDidMount();
}
_endReached(){
    let that=this
    // 判断首屏满屏的情况
    if(that.state.data && that.state.length < parseInt(that.state.totalCount)){
        that.state.currentPage++;
    }else{
         //若总数未满一屏,进去就提示
         alert('已加载完成')
    }
}
_listHeaderComponent(){
    return (
        
            也可以是一组图片的渲染
        
    )
}
_listEmptyComponent(){
    return (
        
            暂无数据
        
    )
}
_renderItem(item){
    return (
        '#333'}}
            activeOpacity = {0.5}  //触摸激活时的不透明度
            onHindUnderlay = {() => {}}  //底层颜色被隐藏时调用
            onShowUnderlay = {() => {}}  //底层颜色显示的时候调用
            underlayColor = {'red'}     //触摸操作底层的颜色
            onPress = {() => {}}    //可以绑定事件
        >  // 触摸视图,只能包含一个子节点
            {item.name}
        
    )
}
_listFooterComponent(){
    return (
        
            列表底部的布局
        
    )
}

tips:复习下js的引用类型和基本类型
基本类型:undefined、string、number、null、boolean
特点:值不可改变,比较是值的比较,存在栈中,栈区包括了变量的标识符和变量的值。
引用类型:object、function、array等对象类型,对象是属性和方法的集合。也就是说引用类型可以拥有属性和方法,属性又可以包含基本类型和引用类型。
特点:值可变,同时保存在栈内存和堆内存中的对象,引用类型的比较是引用的比较,引用类型的赋值其实是对象保存在栈区地址指针的赋值,因此两个变量指向同一个对象,任何的操作都会相互影响

你可能感兴趣的:(RN)