我正在使用react-native-flatlist网格滚动来自服务器的最大数据,并提取并显示在屏幕上。但是在我的应用程序中滚动不流畅。
有什么解决办法吗?
在滚动屏幕时,我也面临着空白。列表获取消失,并在UI中显示空白。
有解决方案吗?
import React, { Component } from 'react';
import {
ActivityIndicator,
Image,
Platform,
StyleSheet,
Text,
FlatList,
Button,
View,
SafeAreaView,
ScrollView,
TouchableOpacity,
PixelRatio,
Dimensions,
StatusBar
} from 'react-native';
import _ from 'lodash';
import ImageCropPicker from 'react-native-image-crop-picker';
import Orientation from 'react-native-orientation';
import FastImage from 'react-native-fast-image';
class MyShowroom extends Component {
constructor() {
super();
this.state = {
index: 0,
section: 0,
width: 0,
height: 0,
isPageLoaded: false,
loadingMoreItems: false,
lastItemIndex: 0,
page: 0,
}
Orientation.addOrientationListener(this._updateOrientation.bind(this))
}
renderList(item) {
return(
<TouchableOpacity>
<View style={{backgroundColor: 'white', alignItems: 'center'}}>
<FastImage style={{width: gridWidth, height: gridHeight}}
resizeMode={FastImage.resizeMode.contain}
source={item.uri}/>
</View>
</TouchableOpacity>
);
}
// extra data is rendering from the redux
render(){
return(
<FlatList
ref={(ref) => { this.flatListRef = ref; }}
data={Items}
renderItem={({ item }) => this.renderList(item)}
numColumns={2}
extraData={this.props.pagination}
keyExtractor={item => item.id}
onEndReached={this._handleMoreItems}
onEndReachedThreshold={0.001}
ListFooterComponent={this._renderFooter}
legacyImplementation = {true}
bounces = {false}
onMomentumScrollEnd={e => this.scroll(e.nativeEvent.contentOffset)}
/>
)
}
答案 0 :(得分:2)
这是FlatList组件出现性能问题的结果,但是您可以在FlatList组件中添加以下道具,这将有助于解决问题。 他们是: 一世。 removeClippedSubviews。将其设置为true,默认值为false。 ii。 windowSize。将此数字设置为30 iii。 maxToRenderPerBatch。这控制了每批渲染的项目数, 这是每个滚动条上呈现的下一个项目块。
<FlatList
data={this.state.contacts}
removeClippedSubviews={true}
maxToRenderPerBatch={60}
windowSize={30}
ListHeaderComponent={headerComponent}
contentContainerStyle={{ paddingBottom: 10 }}
renderItem={({ item }) => (
<View>
{item}
</View>
)}
numColumns={1}
keyExtractor={(item, index) => String(index)}
/>
答案 1 :(得分:0)
我还面临着滚动列表时出现空白页面的问题。在flatlist中添加scrollview之后,现在可以正常工作了。在这里,请检查我的代码可能会有所帮助。
<View style={{ flex: 1}}>
<FlatList
data={data }
renderItem={({ item }) => <this.Item item={item} />}
keyExtractor={item => item.id}
/>