Javascript 循环遍历数据对象并将标头映射到React中的值
我有一个问题,关于如何使用这些数据将标题映射到相应的值,并将其放在UI上 这就是数据的结构:Javascript 循环遍历数据对象并将标头映射到React中的值,javascript,reactjs,graphql,Javascript,Reactjs,Graphql,我有一个问题,关于如何使用这些数据将标题映射到相应的值,并将其放在UI上 这就是数据的结构: { “数据”:{ “详情”:[ { “地址第1行”:“C O Cwtsatotravel”, “地址行2”:“不可用”, “城市名称”:“阿灵顿”, “州名称”:“-”, “国家名称”:“日本”, “邮政编码”:“22203”, “电话号码”:“7638527755”, } ] } }您的代码中存在一些关键错误: const profile\u info=data?详细信息 您的详细信息存储
{
“数据”:{
“详情”:[
{
“地址第1行”:“C O Cwtsatotravel”,
“地址行2”:“不可用”,
“城市名称”:“阿灵顿”,
“州名称”:“-”,
“国家名称”:“日本”,
“邮政编码”:“22203”,
“电话号码”:“7638527755”,
}
]
}
}
您的代码中存在一些关键错误:
const profile\u info=data?详细信息代码>
data.data.details
,而不是data.details
因此,首先要解决这个问题:
const profile_info = data?.data.details;
profile_info['address\u line\u 1']
,但没有profile_info['Address1']
,这是您试图在组件中执行的操作const profileHeaders = [
{
title: "Address1",
property: "address_line_1"
},
{
title: "Address2",
property: "address_line_2"
},
// map all other properties like above.
]
那么你可以这样做:
{profileHeaders.map((v) => (
<Grid
item
style={{
padding: '0px 4px',
}}
>
<Typography className={classes.profileData} gutterBottom={true}>
{v.title}
</Typography>
<Typography className={classes.profileData}>
{' '}
{profile_info[v.property]}
</Typography>
</Grid>
))}
{profileHeaders.map((v)=>(
{v.title}
{' '}
{profile_info[v.property]}
))}
我不会检查配置文件信息是否未定义,但您必须在组件中执行此操作以避免错误。使用与数据中相同的键对标题进行编码:
const headers = {
"address_line_1": "Address1",
"address_line_2": "Address2",
"city_name": "City",
稍后,您可以列出它
Object.entries(headers).forEach(([key, value]) => console.log(`${key}: ${value}`));
console.log(data)
查看其结构,并使用const
来“alias”iterable(带有道具或数组的对象)元素:
从标题
和配置文件信息
Object.entries(headers).forEach(([key, value]) => (
<Grid
key={key}
item
style={{
padding: '0px 4px',
}}
>
<Typography className={classes.profileData} gutterBottom={true}>
{value}
</Typography>
<Typography className={classes.profileData}>
{' ??? use css instead! '}
{profile_info[key]}
</Typography>
</Grid>
您的变量
数据
与您构建的数据
相同吗?是的,没错,非常感谢,我很感激。我会尝试并发布另一条评论。真的很感谢这么详细的回复,我一定会尝试并让你知道。。再次感谢..非常感谢,它完全按照我想要的方式工作:)将解决方案标记为正确答案
Object.entries(headers).forEach(([key, value]) => (
<Grid
key={key}
item
style={{
padding: '0px 4px',
}}
>
<Typography className={classes.profileData} gutterBottom={true}>
{value}
</Typography>
<Typography className={classes.profileData}>
{' ??? use css instead! '}
{profile_info[key]}
</Typography>
</Grid>
Object.keys(headers).map((key, idx) => (
<Element key={key}>
<Name title={headers[key]} />
<Value data={profile_info[key]} />