【发布时间】:2018-03-09 08:43:09
【问题描述】:
请耐心等待,我不善言辞,在这里,我将尽力解释我在映射数组中的嵌套数据时遇到的问题,我猜这个术语将被称为“从本地 API 获取数据ReactJS”下面这段代码是data.js中的数据作为“本地API”
export default[
{
name: "John Doe",
position: "developer",
experiences: [
{
id: 0,
job:"developer 1",
period: "2016-2017",
description: "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laudantium nesciunt recusandae unde. Qui consequatur beatae, aspernatur placeat sapiente non est!"
},
{
id: 1,
job:"developer 2",
period: "2015-2016",
description: "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laudantium nesciunt recusandae unde. Qui consequatur beatae, aspernatur placeat sapiente non est!"
},
{
id: 2,
job:"developer 3",
period: "2014-2015",
description: "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laudantium nesciunt recusandae unde. Qui consequatur beatae, aspernatur placeat sapiente non est!"
}
]
}
]
下面的代码展示了 ReactJS 中的 index.js 和 App.js 两个组件文件
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App'
import data from './data/dataJS';
ReactDOM.render(
<App data={data} />,
document.getElementById('root'));
App.js
import React, { Component } from 'react';
import './App.css';
class App extends Component {
render() {
const {data} = this.props;
const resume = data.map(info => {
//console log
console.log(info.name);
console.log(info.position);
console.log(info.experiences);
console.log(info.experiences.job);
//browser render
return (
<div>
{info.name}
<br/>
{info.position}
</div>
)
});
});
return (
<div>
{<p>{resume}</p>}
</div>
);
}
}
到目前为止,我能够从浏览器 console.log 中获取已确认的数据,并将两个数据 info.name 渲染到 John Doe 和 info.position 渲染到 developer 没问题。
现在,如果我在 {info.position} 下添加此字符串 <li key="experience.id">{info.experiences.job}</li>,我会收到错误消息。
对象作为 React 子对象无效(找到:对象与键 {id, job, period, description})。如果您打算渲染一组子项,请改用数组。
我假设,我设置数组的方式不正确。但是info.experiences 的 console.log 显示了 (3) 组经验的结果。但是控制台登录info.experiences.job 显示未定义。但是我无法弄清楚问题是什么,可能出了什么问题?
我花了两天时间试图找到解决方案,但我没有任何运气。
有什么建议吗?
【问题讨论】:
-
info.experiences是一个数组。console.log(info.experiences)应该告诉你。因此,要访问job属性,您必须执行info.experiences[0].job或类似的操作。 -
info.experiences[i].job
-
为什么你的
App渲染中有 2 个return? -
@Sag1v 一个在
data.map内部。它将resume变成了一个元素数组。 -
你有语法错误,第一次返回后你关闭了
render函数
标签: javascript css arrays json reactjs