ネイティブコンポーネントFlatList(一般)の一般的に使用される3種類、SwipeableFlatList(削除されたスライド)のリストをレンダリング反応し、sectionList(グループ)...

使用のFlatListについて

使用するには、最初のFlatListを導入しなければなりません

import { FlatList } from 'react-native';
复制代码

ListHeaderComponent財産、

ヘッドアセンブリを定義するために使用

ListHeaderComponent={()=> this._createListHeader()}

_createListHeader(){
	return (
        <View style={styles.headView}>
            <Text style={{color: 'white'}}>
                头部布局
            </Text>
        </View>
    )
}
复制代码

ListFooterComponentプロパティ

尾を定義するために使用

ListFooterComponent = {()=> this._createListFooter()}

_createListFooter(){
    return(
        <View style="style.indicatorContainer">
            {	this.state.showFoot === 1
            && 
            <ActivityIndicator
            	style={styles.indicator}
            	size = 'small'
            	animating = {true}
            	color = 'red'
            />
            }
            <Text>{this.state.showFoot === 1?'正在加载更多数据...':'没有更多数据'}</Text>
        </View>
    )
}
复制代码

ItemSeparatorComponentプロパティ

分割ラインを定義するために使用

ItemSeparatorComponent = {()=>this._createSeparatorComponent()}

_createSeparatorComponent(){
	return(
		<View style={{height: 5, backgroundColor: '#eeeeee'}}/>
	)
}
复制代码

ListEmptyComponentプロパティ

ビューを表示する時間を設定しFlatListにデータがありません

アイテムのキー値を設定します。

あなたは、キー属性項目を設定する必要があり、または黄色の警告がポップアップ表示があるでしょう。そして、私たちはここで注意する必要がある各項目のキーはユニークです!

keyExtractor={this._keyExtractor}

_keyExtractor(item, index){
	return `index${index}`
}
复制代码
  • itemlayout

属性は、オーバーヘッドのディメンションを回避するため、オプションの最適化、動的な測定内容です。我々はアイテムの高さを知っている場合、あなたはFlatListより効率的な動作をするためにFlatListそのプロパティを指定することができます!

//200为item的高度,5为分割线的高度
getItemLayout={(data, index) => ({
  length:200, offset: (200 + 5) * index, index
})}
复制代码

プルダウンリフレッシュ

2つの属性がありますFlatListドロップダウンリフレッシュを設定するために使用することができます。

  • ロードされた新しいデータを待っている間に、このプロパティをtrueにリフレッシュ、リストは、シンボルが読み込まれて表示されます。
  • このオプションが設定されている場合はonRefresh、リストが機能「をリフレッシュするためにプルダウン」を実現するためには、標準RefreshControl制御ヘッドを追加します。同時に、あなたは正しく爽やかなプロパティを設定する必要があります。
//不需要自定义样式的时候
/*refreshing = { this.state.is_Loading }
onRefresh = {()=>{
	this.loadData();
}}*/

//修改loading样式
refreshControl = {
    <RefreshControl
        title = {'loading'}
        colors = {['red']}//android
        tintColor = {'red'}//ios
        refreshing = { this.state.is_Loading }
        onRefresh = {()=>{
        	this._onRefresh();
        }}
    />
}

_onRefresh(){
	...
	//下拉刷新的方法
}
复制代码

ラジャは、上のアップロード

LACキャリア、2つのプロパティを達成するためにFlatListパッケージ:

  • onEndReachedThreshold:内容がどこまで下からトリガがコールバックをonEndReached時にこのプロパティを決定します。このパラメータは、比、ではない画素であることに留意されたいです。例えば、0.5のコンテンツの一番下から見える長さの距離をリスト半分トリガ電流を表します。これは、範囲:(0,1)、0と1を除きます。
  • onEndReached:セットの下端からの距離の内容が不十分なonEndReachedThresholdときに呼び出され、リストにスクロールします。
onEndReached ={()=>{
	this._onLoadMore();
}}
onEndReachedThreshold={0.1}
复制代码

隠しスライドバー

  • 横方向にスライドするように配置され
horizontal={true}
复制代码
  • 垂直スクロールバーを非表示にします
showsVerticalScrollIndicator={false}
复制代码
  • 隠された水平スクロールバー
showsHorizontalScrollIndicator={false}
复制代码

共通機能

  • 最後のセクションでscrollToEndのスクロールバー
1. 需要为FlatList设置ref属性绑定flatList
<FlatList ref={(flatList) => this._flatList = flatList}/>
2.	调用
_toEnd(){
	this._flatList.scrollToEnd();
}
复制代码
  • 指定したインデックス位置にscrollToIndexスクロール
1. 需要为FlatList设置ref属性绑定flatList
<FlatList ref={(flatList) => this._flatList = flatList}/>

2.	调用
_toItem(){
	//viewPosition参数:0表示顶部,0.5表示中部,1表示底部
	this._flatList.scrollToIndex({viewPosition: 0, index: this.state.index});
}
复制代码

使用のSwipeableFlatListについて

サポートFlatList、別の新しい3所有財産のすべてのプロパティとメソッド。

  • bounceFirstRowOnMount:ブール

デフォルトでは、最初の時間を意味し、真であるかどうかについての項目FlatListの最初のスライド

  • maxSwipeDistance

割り当てる必要があり、左にスライドは、最大距離を表します

  • renderQuickActions:FUNC

スライドショーの内容を示すために割り当てられなければなりません。

<SwipeableFlatList 
    renderQuickActions={()=>this.genQuickAction()}
	maxSwipeDistance={50}
	bounceFirstRowOnMount={false}/>
//渲染
genQuickAction(){
    return <View style={styles.quickContiner}>
        <TouchableHighlight>
            <View>
            <Text 
            	style={styles.delText}
            	onPress={()=>{
            		alert("您确定要删除吗?")
            	}}>删除</Text>
            </View>
        </TouchableHighlight>
    </View>
}
复制代码

使用のSectionListについて

  • 完全にクロスプラットフォーム
  • 水平レイアウトモードをサポートしています
  • 設定可能なコールバックラインコンポーネントが表示または非表示
  • 別のヘッドアセンブリをサポート
  • 別の尾翼をサポートしています
  • 分離線との間に自己定義されたラインをサポートしています
  • サポートドロップダウンリフレッシュ
  • 支持体上に、ラジャ・ロード
<SectionList
    sections={this.state.CITY_NAMES}//需要绑定的数据
    renderItem={(data) => this._renderItem(data)}
    ItemSeparatorComponent = {()=>this._createSeparatorComponent()}
    keyExtractor={this._keyExtractor}
    renderSectionHeader={(data)=>this._renderSectionHeader(data)}//分组的头部
    refreshControl = {
    	<RefreshControl
    		title={'loading'}
    		colors={['red']}
    		refreshing= { this.state.is_Loading }
    		onRefresh={() => this._onRefresh()}
    	/>
    }
/>
复制代码

デモ

おすすめ

転載: blog.csdn.net/weixin_34200628/article/details/91398491