在本机反应中将嵌套数组显示到平面列表中
Display nested array into a Flat list in react native
我是RN新手,最近开始使用redux。我有一个 api 响应,格式如下:
{
records : [
{
name : "cde"
groups :[
{
id : "212"
fields[{
data : "abc"
}]
}]
}
]
}
因此,在记录内部,我有一个对象数组 "groups",在 "groups" 内部,我有一个对象数组 "fields",在字段内部,我有要显示的数据在 FlatList 里面。到目前为止,我能够显示 "name" ,它位于 FlatList 内的记录中。
我的文件 PeopleList.js 如下所示:
export default class PeopleList extends Component {
_keyExtractor = item => name;
_renderItem = ({ item }) => {
const { name} = item;
const groups = this.props.people.map((items, index)=>{
return( <Text>{name}({items.id})</Text>)
})
//const {} = item.groups;
return (
<View>
<View style={styles.cardContainerStyle}>
<View style={{ paddingRight: 5 }}>
<Text style={styles.cardTextStyle}>
{/* {name} {"\n"} */}
{groups}
</Text>
</View>
<Image
style={styles.faceImageStyle}
// source={{ uri: picture.medium }}
/>
</View>
</View>
);
};
render() {
return (
<FlatList
style={{ flex: 1 }}
data={this.props.people}
keyExtractor={this._keyExtractor}
renderItem={this._renderItem}
showsVerticalScrollIndicator={false}
showsHorizontalScrollIndicator={false}
/>
);
}
}
PeopleList.propTypes = {
people: PropTypes.array
};
people 是一个包含记录对象的数组:responseJson.records
那么,如何显示数据以及keyextractor的用途是什么?
根据我到目前为止的搜索,我们需要对数组使用 map 函数,但不太确定如何在这里使用它
编辑:我修改了我的代码并使用了 map func,现在我得到的输出是:
name1 groupid1 groupid2 ... so on
name2 groupid1 groupid2 ... so on
.
.
. and so on
随心所欲:
name1 groupid1
name2 groupid2
.
.
.
您可以像在代码中使用的那样使用解构赋值来显示数据。
例如:
const { name, groups } = item;
const { fields } = item.groups;
keyExtractor
为您的渲染项目分配一个唯一的键值。在您的例子中,它为 Flatlist 中的每个项目分配了一个 name
值(来自您的 this.props.people
)。
如您所知,所有 React 子项都需要一个唯一的密钥,否则您将收到此警告
Warning: Each child in a list should have a unique "key" prop
需要添加以下代码
if(item.groups){
groupList = item.groups.map((unit, key)=>{
return (<View key="key">
<Text>{unit.id}</Text>
{ unit.fields.map((unit1, key1)=>{
return <Text key={key1}>{unit1.name}</Text>
})
}
后面我们需要显示groupList
return (
<View>
<View style={styles.cardContainerStyle}>
<View style={{ paddingRight: 5 }}>
<Text style={styles.cardTextStyle}>
{/* {name} {"\n"} */}
{groupList}
</Text>
</View>
<Image
style={styles.faceImageStyle}
// source={{ uri: picture.medium }}
/>
</View>
</View>
);
上面的代码片段将显示字段内的数据。
我是RN新手,最近开始使用redux。我有一个 api 响应,格式如下:
{
records : [
{
name : "cde"
groups :[
{
id : "212"
fields[{
data : "abc"
}]
}]
}
]
}
因此,在记录内部,我有一个对象数组 "groups",在 "groups" 内部,我有一个对象数组 "fields",在字段内部,我有要显示的数据在 FlatList 里面。到目前为止,我能够显示 "name" ,它位于 FlatList 内的记录中。 我的文件 PeopleList.js 如下所示:
export default class PeopleList extends Component {
_keyExtractor = item => name;
_renderItem = ({ item }) => {
const { name} = item;
const groups = this.props.people.map((items, index)=>{
return( <Text>{name}({items.id})</Text>)
})
//const {} = item.groups;
return (
<View>
<View style={styles.cardContainerStyle}>
<View style={{ paddingRight: 5 }}>
<Text style={styles.cardTextStyle}>
{/* {name} {"\n"} */}
{groups}
</Text>
</View>
<Image
style={styles.faceImageStyle}
// source={{ uri: picture.medium }}
/>
</View>
</View>
);
};
render() {
return (
<FlatList
style={{ flex: 1 }}
data={this.props.people}
keyExtractor={this._keyExtractor}
renderItem={this._renderItem}
showsVerticalScrollIndicator={false}
showsHorizontalScrollIndicator={false}
/>
);
}
}
PeopleList.propTypes = {
people: PropTypes.array
};
people 是一个包含记录对象的数组:responseJson.records 那么,如何显示数据以及keyextractor的用途是什么?
根据我到目前为止的搜索,我们需要对数组使用 map 函数,但不太确定如何在这里使用它
编辑:我修改了我的代码并使用了 map func,现在我得到的输出是:
name1 groupid1 groupid2 ... so on
name2 groupid1 groupid2 ... so on
.
.
. and so on
随心所欲:
name1 groupid1
name2 groupid2
.
.
.
您可以像在代码中使用的那样使用解构赋值来显示数据。
例如:
const { name, groups } = item;
const { fields } = item.groups;
keyExtractor
为您的渲染项目分配一个唯一的键值。在您的例子中,它为 Flatlist 中的每个项目分配了一个 name
值(来自您的 this.props.people
)。
如您所知,所有 React 子项都需要一个唯一的密钥,否则您将收到此警告
Warning: Each child in a list should have a unique "key" prop
需要添加以下代码
if(item.groups){
groupList = item.groups.map((unit, key)=>{
return (<View key="key">
<Text>{unit.id}</Text>
{ unit.fields.map((unit1, key1)=>{
return <Text key={key1}>{unit1.name}</Text>
})
}
后面我们需要显示groupList
return (
<View>
<View style={styles.cardContainerStyle}>
<View style={{ paddingRight: 5 }}>
<Text style={styles.cardTextStyle}>
{/* {name} {"\n"} */}
{groupList}
</Text>
</View>
<Image
style={styles.faceImageStyle}
// source={{ uri: picture.medium }}
/>
</View>
</View>
);
上面的代码片段将显示字段内的数据。