我正在使用一个平面列表来呈现服务器中的数据,但是我遇到的问题是当我渲染大量数据时,我的应用程序变得太慢了
<FlatList
data={this.state.product}
numColumns={2}
inverted
renderItem={({item}) =>
<TouchableOpacity style={styles.homeGride}>
<View style={styles.offer}>
<Text style={styles.offerText}>{item.offer}%</Text>
</View>
<ImageBackground style={styles.homeImage} source={{uri:`${item.img}`}}>
</ImageBackground>
<Text style={styles.homeProductText}>{item.title}</Text>
<View style={{flexDirection:"row-reverse"}}>
<Text style={{flex:1,fontFamily:"FaNum"}}>{item.price}</Text>
<Text style={{flex:1,fontFamily:"FaNum"}}>{item.new_price}</Text>
</View>
<Button small danger>
<Text style={{padding:5}}>خرید</Text>
</Button>
</TouchableOpacity>
}
keyExtractor={({id}, index) => id}
/>
答案 0 :(得分:1)
您应该考虑使用FlatList的onEndReached
属性。
首先定义一个page
状态
this.setState({page:1});
从服务器获取数据时,发送page
参数以对数据进行分块
例如在laravel服务器端框架中执行此操作:
$data = Data::where("sth","sth")->paginate(10,'page');
现在在您的本机应用程序中:
<FlatList
data={this.state.product}
numColumns={2}
inverted
onEndReached={this.handleLoadMore}
onEndThreshold={10}
renderItem={({item}) =>
..sth..
}
keyExtractor={({id}, index) => id}
/>
现在处于handleLoadMore中,将1编号添加到page
状态,然后再次获取数据
这将帮助您提高速度和性能,并在需要时获取其他数据!
答案 1 :(得分:1)
我建议您使用recyclerListView component 在Android设备上具有更好的性能。