如何并排渲染两个项目 React Native
How to render two items side by side ReactNative
假设我有 <ListingCard/>
个组件
<ScrollView/>
。
我想要的是在容器 class 上并排渲染那些 <ListingCard/>
。
这是我到目前为止尝试过的方法:
<ListingCard/>
const ListingCard = (props) => {
return (
<View style={styles.container}>
<Text>This is ListingCard Component</Text>
</View>
);
};
const styles = StyleSheet.create({
container: {
//flex: 1,
alignItems: 'center',
justifyContent: 'center',
height: 150,
width: Dimensions.get('window').width / 2 - 6,
backgroundColor: colors.WHITE,
borderRadius: 5,
marginHorizontal:10,
marginBottom: 10
},
});
export default ListingCard;
我是这样使用的 <ListingCard/>
:
render() {
const { currentCategory } = this.state;
return (
<Drawer
ref={(ref) => this._drawer = ref}
type="static"
onOpenStart={() => {
this.setState({
isDrawerOpen: true,
})
}}
onClose={() => {
this.setState({
isDrawerOpen: false,
})
}}
content={<SideFilterMenu />}
tapToClose={true}
side={'right'}
openDrawerOffset={0.2} // 20% gap on the right side of drawer
panCloseMask={0.2}
closedDrawerOffset={-3}
>
<View style={styles.container}>
<CustomHeader
onPress={() => this.handleFilterPress()}
headerText={currentCategory && currentCategory.categoryName}
isIconVisible={true}
rightButtonText={'Filtrele'}
onIconPress={() => this.handleBackPress()}
/>
<ScrollView
style={{flex:1}}
contentContainerStyle={styles.cardContainer}
>
<ListingCard />
<ListingCard />
<ListingCard />
<ListingCard />
<ListingCard />
<ListingCard />
<ListingCard />
<ListingCard />
</ScrollView>
</View>
</Drawer>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
//alignItems: 'center',
//justifyContent: 'center',
backgroundColor: colors.GENERAL_BCK,
//paddingHorizontal: 5
},
cardContainer: {
flexDirection: 'row',
flexWrap: 'wrap'
}
});
我试过的是,有或没有 <View>
容器,但这根本没有帮助。我无法实现它的原因是我在 ReactNative 上相对较新,并且在这些样式上遇到了困难。
我无法并排渲染这些 <ListingCard/>
。任何帮助将不胜感激,谢谢。
好的,我已经修复了。
问题是 <ListingCard/>
的宽度。
它是:width: Dimensions.get('window').width / 2 - 6,
太宽了,同一行放不下两个。所以我将其更改为:width: Dimensions.get('window').width / 2 - 20,
瞧!成功了。
假设我有 <ListingCard/>
个组件
<ScrollView/>
。
我想要的是在容器 class 上并排渲染那些 <ListingCard/>
。
这是我到目前为止尝试过的方法:
<ListingCard/>
const ListingCard = (props) => {
return (
<View style={styles.container}>
<Text>This is ListingCard Component</Text>
</View>
);
};
const styles = StyleSheet.create({
container: {
//flex: 1,
alignItems: 'center',
justifyContent: 'center',
height: 150,
width: Dimensions.get('window').width / 2 - 6,
backgroundColor: colors.WHITE,
borderRadius: 5,
marginHorizontal:10,
marginBottom: 10
},
});
export default ListingCard;
我是这样使用的 <ListingCard/>
:
render() {
const { currentCategory } = this.state;
return (
<Drawer
ref={(ref) => this._drawer = ref}
type="static"
onOpenStart={() => {
this.setState({
isDrawerOpen: true,
})
}}
onClose={() => {
this.setState({
isDrawerOpen: false,
})
}}
content={<SideFilterMenu />}
tapToClose={true}
side={'right'}
openDrawerOffset={0.2} // 20% gap on the right side of drawer
panCloseMask={0.2}
closedDrawerOffset={-3}
>
<View style={styles.container}>
<CustomHeader
onPress={() => this.handleFilterPress()}
headerText={currentCategory && currentCategory.categoryName}
isIconVisible={true}
rightButtonText={'Filtrele'}
onIconPress={() => this.handleBackPress()}
/>
<ScrollView
style={{flex:1}}
contentContainerStyle={styles.cardContainer}
>
<ListingCard />
<ListingCard />
<ListingCard />
<ListingCard />
<ListingCard />
<ListingCard />
<ListingCard />
<ListingCard />
</ScrollView>
</View>
</Drawer>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
//alignItems: 'center',
//justifyContent: 'center',
backgroundColor: colors.GENERAL_BCK,
//paddingHorizontal: 5
},
cardContainer: {
flexDirection: 'row',
flexWrap: 'wrap'
}
});
我试过的是,有或没有 <View>
容器,但这根本没有帮助。我无法实现它的原因是我在 ReactNative 上相对较新,并且在这些样式上遇到了困难。
我无法并排渲染这些 <ListingCard/>
。任何帮助将不胜感激,谢谢。
好的,我已经修复了。
问题是 <ListingCard/>
的宽度。
它是:width: Dimensions.get('window').width / 2 - 6,
太宽了,同一行放不下两个。所以我将其更改为:width: Dimensions.get('window').width / 2 - 20,
瞧!成功了。