javascript - 在多次嵌套对象上使用 ES6 .map() 以获取反应组件
问题描述
我如何迭代this object
使用.map()
:
state = {
contacts: [
{ "id":1,
"name":"Leanne Graham",
"email":"Sincere@april.biz",
"address":{
"street":"Kulas Light",
"city":"Gwenborough",
"geo":{
"lat":"-37.3159",
"lng":"81.1496"
}
},
"phone":"1-770-736-8031",
},
{ "id":2,
"name":"Ervin Howell",
"email":"Shanna@melissa.tv",
"address":{
"street":"Victor Plains",
"city":"Wisokyburgh",
"geo":{
"lat":"-43.9509",
"lng":"-34.4618"
}
},
"phone":"010-692-6593",
}
]
}
所以映射联系人将起作用,因为它是一个数组,所有数据(如 id、姓名、电子邮件和电话)都可以访问,但如果我想遍历地址,则会崩溃。我使用了一些示例,例如:
render(){
const {contacts} = this.state
return(
<>
{Object.keys(contacts.address).map((address, index) => (
<span className="d-block" key={index}>{contacts.address[address]}</span>
))}
</>
);
}
它应该与地址一起使用,但在 geo{} 上崩溃了,此时我已经失去了信号。
任何人都可以给我一个想法?
解决方案
我认为这不是问题,只要它显示它们
映射后,contacts
您可以随意增加地址属性:
const contacts = [
{
id: 1,
name: "Leanne Graham",
email: "Sincere@april.biz",
address: {
street: "Kulas Light",
city: "Gwenborough",
geo: {
lat: "-37.3159",
lng: "81.1496",
},
},
phone: "1-770-736-8031",
},
{
id: 2,
name: "Ervin Howell",
email: "Shanna@melissa.tv",
address: {
street: "Victor Plains",
city: "Wisokyburgh",
geo: {
lat: "-43.9509",
lng: "-34.4618",
},
},
phone: "010-692-6593",
},
];
const addresses = contacts.map(({ address, id }) => ({
id,
...address,
}));
console.log(addresses);
就像渲染它们一样:
addresses.map(({ street, city, id }) => (
<span className="d-block" key={id}>
{street}:{city}
</span>
))
推荐阅读
- python - Python中每个句子的首字母大写
- closedxml.report - 使用 ClosedXML.Report 创建一个列表
- reactjs - 我将如何在除登录页面之外的所有组件上呈现我的 MUI 抽屉?
- google-apps-script - 避免重复:Google Sheets 脚本 + API WooCommerce
- android - 如何在 YYY.MM-DD 中更改 Material Date Picker 的格式
- json - id 的数据关系与大规模 JSON API 中的服务器填充的数据关系?
- google-cloud-dataflow - 如何在不需要序列化的情况下使用 Guice 将我的 api 注入数据流作业?
- c++ - 错误:静态断言失败:std::thread arguments [...] 但参数的数量是正确的
- swiftui - 在 SwiftUI TabView 中动态隐藏选项卡 - 选项卡在更多...溢出项中混合
- r - 用下一个更高的因子水平替换因子值