【发布时间】:2019-08-20 04:38:16
【问题描述】:
我正在尝试将 JSON 文件中的简历信息动态加载到 React 组件中。我能够正确加载公司、职位和时间框架,但是当我尝试获得加载职位的职责时,我不断收到错误消息。
JSON 的设计类似于:
[
{
"company": "Company Name",
"title": ["Position 1", "Position 2"],
"time": ["January 2017 - Present", "January 2016 - December 2017"],
"responsibilities": [["Responsibility 1", "responsibility 2", "responsibility 3"],["Thing 1","thing 2", "thing 3"]]
},
]
每个数组的索引对应相同的信息。 IE 索引 0 是相同的标题、时间范围和职责。
我尝试了几种不同的尝试映射到内部数组的变体,但不断收到各种错误
return (
<div className='work'>
{Data.map(({company, title, time, responsibilities, resp}, index)=>
<div>
<h1>{company}</h1>
{title.map((title, index)=>
<div key={index}>
<h2>{title}</h2>
<h3>{time[index]}</h3>
{responsibilities.map((respArr)=>
<ul key={index}>
{respArr.map(resp =>
<li>{resp}</li>
)}
</ul>
)}
</div>
)}
</div>
)}
我收到此代码的错误是
TypeError: Cannot read property 'map' of undefined
(anonymous function)
src/components/exp.js:14
11 | {title.map((title, index)=>
12 | <div key={index}>
13 | <h2>{title}</h2>
> 14 | <h3>{time[index]}</h3>
| ^ 15 | {responsibilities.map((respArr)=>
16 | <ul key={index}>
17 | {respArr.map(resp =>
如果我删除带有 责任.map 的部分,它会正确填充职位的公司、职务和时间范围,但我无法在每个职务/时间范围下为每个责任添加一个带有 li 的 UL。
预期的输出是
Company
Position 1
January 2017 - Present
-Responsibility 1
-Responsibility 2
-Responsibility 3
Position 2
January 2016 - December 2017
-Thing1
-Thing2
-Thing3
【问题讨论】:
-
您有硬编码数据吗?数据的来源是什么?
-
您的代码似乎没问题 - stackblitz.com/edit/react-mp9x4m。可能是您的数据源的问题。
-
类似于@ravibagul91 所说的,请注意您的代码不是 100% 可重现的,因为数据不是其中的一部分
-
感谢您的帮助。我确实回到了我的数据并进行了一些编辑,这有所帮助,但是它仍然不太正确。不是第一个职责数组与第一个标题匹配,第二个职责数组与第二个标题匹配,而是两个职责数组都属于两个标题。知道我哪里出错了吗?上面更新了预期的输出。
标签: javascript node.js reactjs ecmascript-6