反应原生ScrollView / FlatList不滚动

cru*_*148 5 reactjs react-native expo

我有一个要放置在FlatList中的数据列表(即ScrollView),每当我尝试向下滚动以查看更多列表时,ScrollView就会弹回到列表的顶部,所以我看不到列表的底部。

我正在使用Expo,奇怪的是,如果我只是创建一个新项目或将某些代码复制/粘贴到Snack中,那么滚动就可以了。仅在我当前的项目中,我无法滚动列表。我什至进入main.js文件,然后将示例代码粘贴到该文件中,问题仍然存在。

我的示例代码位于:https : //snack.expo.io/ryDPtO5-b 我已将此确切代码粘贴到我的项目中,并且无法按预期工作。

版本:RN 0.44 / Expo SDK 17.0.0 / React:16.0.0-alpha.6

我的项目实际用例是在屏幕的底部三分之一处放置一个FlatList组件,以显示作业列表。这是我发现错误的地方以及开始尝试调试问题的地方。在我的项目中,我有一个View样式为的父{flex: 1List,其中包含FlatList... List来自react-native-elements

编辑

这是我实际上试图使用的代码:

 <View style={styles.container}>
<View style={containerStyles.headerContainerStyle}>
    <Text style={[textStyles.h2, { textAlign: "center" }]}>
        Territory: {this.props.currentTerritory}
    </Text>
</View>
<View style={styles.mapContainer}>
    <MapView
        provider="google"
        onRegionChangeComplete={this.onRegionChangeComplete}
        region={this.state.region}
        style={{ flex: 1 }}
    >
        {this.renderMapMarkers()}
    </MapView>
</View>
<Badge containerStyle={styles.badgeStyle}>
    <Text>Orders Remaining: {this.props.jobsList.length}</Text>
</Badge>
<List containerStyle={{ flex: 1 }}>
    <FlatList
        data={this.props.jobsList}
        keyExtractor={item => item.id}
        renderItem={this.renderJobs}
        removeClippedSubviews={false}
    />
  </List>
 </View>;
Run Code Online (Sandbox Code Playgroud)

还有我所有的风格

const styles = StyleSheet.create({
container: {
    flex: 1,
},
mapContainer: {
    height: 300,
},
badgeStyle: {
    backgroundColor: 'green',
    alignSelf: 'center',
    marginTop: 15,
    width: 300,
    height: 35,
},
});
Run Code Online (Sandbox Code Playgroud)

最后,我的renderItem函数:

 renderJobs = ({ item }) => {
const { fullAddress, pickupTime } = item;

return (
    <ListItem
        containerStyle={
            item.status === "active" && { backgroundColor: "#7fbf7f" }
        }
        title={fullAddress}
        titleStyle={{ fontSize: 14 }}
        subtitle={pickupTime}
        subtitleStyle={{ fontSize: 12, color: "black" }}
        onPress={() =>
            this.props.navigation.navigate("jobActions", { job: item })
        }
    />
);
};
Run Code Online (Sandbox Code Playgroud)

mbi*_*ark 6

我能够解决这个问题。

解决方案是<View style={{flex:1}}>在renderRow返回组件之后使用flatlist 组件 <View style={{flex:1}}>


And*_*een 3

我很困惑 - 您使用的是 aFlatList还是 a ScrollView- 这两个元素具有完全不同的生命周期事件(aFlatList要求您定义各个行的呈现方式及其键,而 aScrollView期望子元素与组件内联呈现)。

无论如何,我认为问题出在您的结构中,听起来该List元素也需要高度属性({flex: 1}),因为绝对父级正在填充其空间,但该List组件没有预定义的高度。