【发布时间】:2019-12-31 03:26:57
【问题描述】:
我有一个嵌套的 json 在我的本地服务器中运行,我正在尝试通过能够输出这些嵌套数据来练习反应。对于这个,我试图只显示一天并输出白天可用的时间段。我正处于尝试输出每个“插槽”的阶段,并将使用按钮/切换来放置更多功能。
使用以下代码,我只能完成我认为获取“天”(星期一,星期二...)的内容。如果我错了,请纠正我,但我认为它们只被解析为字符串,而不是作为对象或数组维护,所以我没有注意到我可以获取“插槽”。另一个证据是,当我尝试映射“日”时,它正在映射字符串。
我认为我的问题是当它被传递到组件树时,我没有理解和丢失对 props 的跟踪。教程和指南解释了映射的一般意义,但我要么丢失了维护道具的特定细节,要么我在映射方面做错了。
另外,正如您可能知道的那样,这是我在互联网上的第一篇与代码相关的帖子。我还想询问您关于编码(或像宠物一样)的询问或提供有用信息的提示。我想更多地参与这些资源,以测试/练习我对其他人问题的了解。
当然,挑选任何更好的反应语法。我在这方面只有一周大,并试图尽可能多地吸收有关 react 的信息。
json
const advisor = [
{
id: 2,
name: { first: "John", last: "Doe" },
email: "jdoe@harvard.edu",
availability: {
monday: {
slot: { start: 1400, end: 1410, available: true, student: null },
slot: { start: 1415, end: 1425, available: true, student: null },
slot: { start: 1430, end: 1440, available: false, student: null },
slot: { start: 1445, end: 1455, availabie: true, student: null }
},
tuesday: {},
wednesday: {},
thurday: {
// slot1: { start: 1400, end: 1410, available: true, student: null },
// slot2: { start: 1415, end: 1425, available: true, student: null },
// slot3: { start: 1430, end: 1440, available: true, student: null },
// slot4: { start: 1445, end: 1455, availabie: true, student: null }
},
friday: {}
}
}
];
应用
import React from "react";
import Advisors from "./components/advisors/advisors.jsx";
function App() {
return (
<div className="App">
<Advisors />
</div>
);
}
export default App;
顾问
import React, { Component } from "react";
import Availability from "./availability/availability.jsx";
class Advisors extends Component {
constructor(props) {
super(props);
this.state = {
advisors: []
};
}
componentDidMount = () => {
this.fetchData();
};
fetchData = () => {
fetch("/api/advisors")
.then(response => response.json())
.then(
advisors => this.setState({ advisors })
)
.catch(error => console.log("Parse Failed", error));
};
render() {
const { advisors } = this.state;
return (
<div>
{advisors.map(advisor => {
return (
<div key={advisor.id}>
<h2>
{advisor.name.first} {advisor.name.last}
</h2>
<h6>{advisor.email}</h6>
{Object.keys(advisor.availability).map((day, key) => (
//keys = {mon, tues, wed, thu, fri}
<Availability key={key} day={day} />
))}
</div>
);
})}
</div>
);
}
}
export default Advisors;
可用性
import React, { Component } from "react";
class Availability extends Component {
constructor(props) {
super(props);
this.state = {};
}
render() {
const { day } = this.props;
return (
<div>
<h4>{day}</h4>
<ul>
{Object.keys(day).map((x, i) => {
return <li key={i}>{x.start}</li>;
})}
</ul>
</div>
);
}
}
export default Availability;
【问题讨论】:
标签: javascript arrays reactjs dictionary key