gpt4 book ai didi

javascript - FlatList 不滚动

转载 作者:可可西里 更新时间:2023-11-01 01:57:32 26 4
gpt4 key购买 nike

我创建了一个屏幕,其中显示了一个包含 FlatList 的组件。出于某种原因,我无法滚动列表。谁能发现我的错误并指出正确的方向?

我的屏幕文件中的渲染函数和样式:

render() {
return (
<View style={styles.container}>
<SearchBar />
<ActivityList style={styles.list} data={this.state.data} />
</View>
);
}
}

const styles = StyleSheet.create({
container: {
flex: 1,
overflow: 'hidden',
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'flex-start',
},
list: {
flex: 1,
overflow: 'hidden',
},
});

从我的 listitem 组件渲染函数和样式:

export default class CardItem extends React.PureComponent {
render() {
return (
<View style={styles.cardview}>
<View style={styles.imagecontainer}>
<Image
resizeMode="cover"
style={styles.cardimage}
source={{
uri: this.props.image,
}}
/>
</View>
<View style={styles.cardinfo}>
<Text style={styles.cardtitle}>{this.props.title}</Text>
<View style={styles.cardtext}>
<Text style={styles.textdate}>{this.props.date}</Text>
<Text style={styles.texthour}>{this.props.hour}</Text>
</View>
</View>
</View>
);
}
}

const styles = StyleSheet.create({
cardview: {
flex: 1,
justifyContent: 'flex-start',
backgroundColor: 'white',
elevation: 3,
maxHeight: 200,
width: Dimensions.get('window').width - 20,
margin: 1,
marginTop: 10,
borderRadius: 4,
},
imagecontainer: {
flex: 7,
height: 140,
borderRadius: 4,
},
cardimage: {
flex: 1,
opacity: 0.8,
height: 140,
borderTopLeftRadius: 4,
borderTopRightRadius: 4,
},
cardinfo: {
flex: 2,
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
padding: 10,
},
cardtitle: {
flex: 1,
fontSize: 16,
fontWeight: 'bold',
},
cardtext: {
flex: 1,
justifyContent: 'center',
alignItems: 'flex-end',
},
textdate: {
color: '#5e5e71',
},
texthour: {
color: '#5e5e71',
},
});

从我的列表组件中呈现函数和样式:

export default class ActivityList extends React.Component {
_renderCardItem = ({ item }) => (
<CardItem
image={item.image}
title={item.title}
date={item.date}
hour={item.hour}
/>
);

_keyExtractor = item => item.id;

render() {
return (
<FlatList
data={this.props.data}
renderItem={this._renderCardItem}
contentContainerStyle={styles.cardcontainer}
keyExtractor={this._keyExtractor}
/>
);
}
}

const styles = StyleSheet.create({
cardcontainer: {
flex: 1,
overflow: 'hidden',
backgroundColor: 'white',
alignItems: 'center',
width: Dimensions.get('window').width,
borderWidth: 0,
},
});

我的数据项都有唯一的 ID、标题、日期、小时。

通读所有可用的指南和文档,但没有找到解决方案。

最佳答案

取出 styles.cardcontainer 中的 flex: 1,它应该可以让你滚动。 FlatList/ScrollView contentContainerStyle 属性包裹了所有的子组件——如果你愿意的话,什么是 FlatList 的“内部”——并且永远不应该有一个定义的高度或 flex 值。如果您需要为 FlatList 本身设置 flex: 1,请改用 style={{flex: 1}}。干杯!

关于javascript - FlatList 不滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48674848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com