react-native - 在 FlatList 或 List 中表示以下数据
问题描述
嗨,我正在尝试制作以下对象的平面列表我似乎不明白 renderItem 是如何工作的,因为我的键在 FlatList 中是唯一的。我试过了,Tried to get frame four out of range index NaN
基本上需要第一个对象是 onPress 可以向我显示子对象的标题
this.setState({objToDisplay: parsedObj});
// parsedOgj is here
Object {
"Mike Smith": Object {
"1534555555": "Helena",
},
"Jack": Object {
"1553555897": "Cris",
},
"mrs bond": Object {
"10101": "Test Expo",
"8210": "Tester",
},
"test": Object {
"2222": "Test Expo 2",
"3333": "Test Expo 3",
},
}
<FlatList
style={styles.list}
data={this.state.objToDisplay}
renderItem={({item}) =>()} // would to have Test and then arrow to see the sub object
/>
解决方案
尝试将您的对象转换为组件可以读取的数组FlatList
,然后使用renderItem
prop 传递一个函数,该函数将返回列表的组件。
这是一个将对象转换为数组并将键显示为名称的示例:
obj = {
'Mike Smith': {
1534555555: 'Helena',
},
Jack: {
1553555897: 'Cris',
},
'mrs bond': {
10101: 'Test Expo',
8210: 'Tester',
},
test: {
2222: 'Test Expo 2',
3333: 'Test Expo 3',
},
};
data = Object.keys(this.obj).map(key => ({
name: key,
values: { ...this.obj[key] },
}));
render() {
return (
<FlatList
data={this.data}
keyExtractor={item => item.name}
renderItem={({ item }) => {
return (
<View>
<Text>Name: {item.name}</Text>
</View>
);
}}
/>
);
}
在此示例中,您的数据最终将如下所示:
this.data Array [
Object {
"name": "Mike Smith",
"values": Object {
"1534555555": "Helena",
},
},
Object {
"name": "Jack",
"values": Object {
"1553555897": "Cris",
},
},
Object {
"name": "mrs bond",
"values": Object {
"10101": "Test Expo",
"8210": "Tester",
},
},
Object {
"name": "test",
"values": Object {
"2222": "Test Expo 2",
"3333": "Test Expo 3",
},
},
]
item Object {
"name": "Mike Smith",
"values": Object {
"1534555555": "Helena",
},
}
item Object {
"name": "Jack",
"values": Object {
"1553555897": "Cris",
},
}
item Object {
"name": "mrs bond",
"values": Object {
"10101": "Test Expo",
"8210": "Tester",
},
}
item Object {
"name": "test",
"values": Object {
"2222": "Test Expo 2",
"3333": "Test Expo 3",
},
}
如果您希望将values
键作为数组,只需将扩展运算符更改为另一个map()
,它将起作用。
从这里你可以使用这个结构来创建你想要的组件并随心所欲地展示它们。
推荐阅读
- javascript - 如何在 chartist.js 脚本中使用 laravel 数组
- django - Django 从 1.11 升级到 2.2.1 URL 和路径问题
- mysql - 如何创建包含来自多个表的多个列的全文索引?
- javascript - 我有一个函数可以调用我数据库中两个集合的连接,并将其存储在两个数组中,但我无法访问它
- angular - 如何为 ngx-admin 添加角度/材质
- tokbox - OTPublisherSettings *settings = [[OTPublisherSettings alloc] init]; 收到错误的接收器类型“int32_t”(又名“int”)
- c++ - 缺少的项目最终数组列表
- android - 在哪里可以找到 EXTRA_ONLINE 的值列表?
- spring - 有没有办法为 Spring 中的 DataSourceTransactionManager 的事务超时设置实时计时器?
- angular - ngrx-effect 的单元测试失败