当列表大小很高时,FlatList 不稳定 - 本机反应

FlatList is not stable when list size is high - react native

我的应用程序的 react-native 版本是 0.51.0。

flatlist 大小不是那么大时,加载没有任何问题。 (figure_01).

但是当列表大小很大时(这里我的列表中有 55 个项目),它显示的是空行而不是值。 (figure_02).

我检查了列表项,没有任何空值或空项。 并且还检查了更多设备。 请帮我解决这个问题。 提前致谢

figure_01

figure_02

<ScrollView style={Styles.scroll_main} contentContainerStyle={{flexGrow:1}} >
                <View style={Styles.container_listview}>

                    <FlatList
                        data={ this.state.flatListItems }
                        keyExtractor={this._keyExtractor}
                        ItemSeparatorComponent = {this.FlatListItemSeparator}
                        renderItem={

                                ({item}) => <View style={Styles.item_m_log}>
                                <Content style={Styles.model_container}>
                                    <TouchableWithoutFeedback>
                                        <View>
                                            <View style={{flexDirection: 'row'}}>
                                                <View style={Styles.txt_model_user_pro_view}><Text style={Styles.txt_model_m_log} uppercase={false}> •  Card Number </Text></View>
                                                <View style={Styles.txt_model_details_user_pro_view}><Text style={Styles.txt_model_details_m_log} uppercase={false}> : {item.cardNumber} </Text></View>
                                            </View>
                                          <View style={{flexDirection: 'row'}}>
                                                <View style={Styles.txt_model_user_pro_view}><Text style={Styles.txt_model_m_log} uppercase={false}> •  Vehicle Number </Text></View>
                                                <View style={Styles.txt_model_details_user_pro_view}><Text style={Styles.txt_model_details_m_log} uppercase={false}> : {item.vehicleNo}</Text></View>
                                            </View>
                                            <View style={{flexDirection: 'row'}}>
                                                <View style={Styles.txt_model_user_pro_view}><Text style={Styles.txt_model_m_log} uppercase={false}> •  Date/Time </Text></View>
                                                <View style={Styles.txt_model_details_user_pro_view}><Text style={Styles.txt_model_details_m_log} uppercase={false}> : {item.deviceTimeStamp}</Text></View>
                                            </View>
                                            <View style={{flexDirection: 'row'}}>
                                                <View style={Styles.txt_model_user_pro_view}><Text style={Styles.txt_model_m_log} uppercase={false}> •  Amount </Text></View>
                                                <View style={Styles.txt_model_details_user_pro_view}><Text style={Styles.txt_model_details_m_log} uppercase={false}> : {item.price} </Text></View>
                                            </View>
                                            <View style={{flexDirection: 'row'}}>
                                                <View style={Styles.txt_model_user_pro_view}><Text style={Styles.txt_model_m_log} uppercase={false}> •  Mileage  </Text></View>
                                                <View style={Styles.txt_model_details_user_pro_view}><Text style={Styles.txt_model_details_m_log} uppercase={false}> : {item.mileageKm}</Text></View>
                                            </View>
                                            <View style={{flexDirection: 'row'}}>
                                                <View style={Styles.txt_model_user_pro_view}><Text style={Styles.txt_model_m_log} uppercase={false}> •  Fuel Station </Text></View>
                                                <View style={Styles.txt_model_details_user_pro_view}><Text style={Styles.txt_model_details_m_log} uppercase={false}> : {item.stationName} </Text></View>
                                            </View>

                                        </View>
                                    </TouchableWithoutFeedback>
                                </Content>
                                </View>
                        }
                    />
                </View>
            </ScrollView>

问题出在 renderItem 方法内部使用的 Content 标签中,根据 native-base documentation 您只能在一个屏幕内使用一个 Content 标签,删除 Content 标签后列表将完美加载。而且您不必将 Flatlist 包裹在 ScrollView 周围,因为 flatlist 已经继承了 ScrollView 属性。

我在尝试使用大列表时遇到了同样的问题,它会呈现列表元素但没有显示它。

我的解决方案:

  1. 给列表项绝对高度
  2. 使用第三方插件,比如 flatlist