我正在建立两列样式列表(2 * x)。它填充来自API的按钮。
我试图将if条件(如果null中的数据跳过创建按钮)添加到第二列
请告知如何在标签之间添加if条件。
渲染中
Elementlist.push(
<View style={styles.RowElement}>
<View style={styles.Column}>
<TouchableOpacity onPress={() => this.props.navigation.navigate("elementDetails")}>
<Text>{state.elementID[x]}</Text>
</TouchableOpacity>
</View>
<View style={styles.Column}>
<TouchableOpacity onPress={() => this.props.navigation.navigate("elementDetails")}>
<Text>{state.elementID[x + 1]}</Text>
</TouchableOpacity>
</View>
</View>)
x = x + 1;
if (this.state.UnitsID[x + 1] == null) { break; }
}
作为回报
<ScrollView>
{Unitslist}
</ScrollView>
答案 0 :(得分:0)
React Native FlatList组件已经具有numColums属性的此功能。
https://facebook.github.io/react-native/docs/flatlist#numcolumns
因此您可以轻松地申请此案。
示例:
import React from 'react';
import { SafeAreaView, View, FlatList, StyleSheet, Text } from 'react-native';
import Constants from 'expo-constants';
const DATA = [
{
id: 'bd7acbea-c1b1-46c2-aed5-3ad53abb28ba',
title: 'First Item',
},
{
id: '3ac68afc-c605-48d3-a4f8-fbd91aa97f63',
title: 'Second Item',
},
{
id: '58694a0f-3da1-471f-bd96-145571e29d72',
title: 'Third Item',
},
{
id: '58694a0f-3da1-471f-bd96-145571e29d73',
title: 'Fourth Item',
},
];
function Item({ title }) {
return (
<View style={styles.item}>
<Text style={styles.title}>{title}</Text>
</View>
);
}
export default function App() {
return (
<SafeAreaView style={styles.container}>
<FlatList
numColumns={2}
data={DATA}
renderItem={({ item }) => <Item title={item.title} />}
keyExtractor={item => item.id}
/>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
marginTop: 10
},
item: {
backgroundColor: '#f9c2ff',
padding: 20,
marginVertical: 8,
marginHorizontal: 16,
},
title: {
fontSize: 16,
},
});