【发布时间】:2018-03-17 17:57:35
【问题描述】:
我是 React-Native 的新手,正在努力从嵌套数组中返回对象(希望我使用的是正确的术语)。
我正在从 tfl 管状态 api JSON 中获取我的数据,如下所示:
[
{
"$type": "Tfl.Api.Presentation.Entities.Line,
Tfl.Api.Presentation.Entities",
"id": "bakerloo",
"name": "Bakerloo",
"modeName": "tube",
"disruptions": [],
"created": "2018-03-13T13:40:58.76Z",
"modified": "2018-03-13T13:40:58.76Z",
"lineStatuses": [
{
"$type": "Tfl.Api.Presentation.Entities.LineStatus,
Tfl.Api.Presentation.Entities",
"id": 0,
"statusSeverity": 10,
"statusSeverityDescription": "Good Service",
"created": "0001-01-01T00:00:00",
"validityPeriods": []
}
],
"routeSections": [],
"serviceTypes": [],
"crowding": {}
},
我正在使用 Axios 获取数据。
state = { lineDetails: [] };
componentDidMount() {
axios.get('https://api.tfl.gov.uk/line/mode/tube/status')
.then(response => this.setState({ lineDetails: response.data }));
};
我正在返回这样的数据。
renderLineDetails() {
return this.state.lineDetails.map((details) =>
<TubeList
key={details.id}
details={details} />
)};
render() {
return (
<ScrollView>
{this.renderLineDetails()}
</ScrollView>
);
}
My TubeList component looks like:
const TubeList = ({ details }) => {
const { name, statusSeverityDescription } = details;
const { nameStyle, statusStyle } = styles;
return (
<TubeCard>
<CardSectionTitle>
<Text style={nameStyle}>{name}</Text>
</CardSectionTitle>
<CardSectionStatus>
<Text style={statusStyle}>{statusSeverityDescription}</Text>
</CardSectionStatus>
</TubeCard>
);
};
有人能解释为什么 statusSeverityDescription 没有显示在我的下面列表中吗?
谢谢。
【问题讨论】:
-
如果我理解你的问题,你应该写
response.data.lineStatuses,因为statusSeverityDescription是lineStatuses的一部分。 -
嗨,Prasun,感谢您的回复,不幸的是,我在将响应更改为建议时收到此错误:TypeError: undefined us not an object evaluation' 'this.state.lineDetails.map'。
-
啊,
response.data是一个数组,抱歉我错过了。details有一个数组lineStatuses,因此response.data将保持不变,但您需要更改处理details的方式。您将通过在details中的lineStatuses数组上迭代得到statusSeverityDescription,例如details.lineStatuses[i].statusSeverityDescription。 -
如果你渲染这个
<TubeCard>而不是这个<Text style={statusStyle}>{statusSeverityDescription}</Text>,你能看到这个statusSeverityDescription吗?
标签: javascript react-native jsx