json - ReactJS 错误未处理拒绝 - 如何访问具有多个部分的 json 文件?
问题描述
我正在关注有关使用 Fetch 和 ReactJS 的教程,能够从 API/json 访问数据的某个部分,但是在尝试访问其他部分时,我收到错误消息。这是 JSON 文件,它使用以下 API:https ://api.myjson.com/file1
编码
import React, { Component } from 'react';
import {render} from "react-dom";
import './BuildingSimulation.css';
class BuildingSimulation extends Component {
state = { data: [] }
componentWillMount(){
fetch('https://api.myjson.com/bins/zb5kf', {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-type': 'application/json',
'Authorization': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiR3JlZyIsInVuaXF1ZV9uYW1lIjoiZ2dyYWZmIiwibmJmIjoxNTI0ODM5Nzc1LCJleHAiOjE1MjQ5MjYxNzV9.xhvdfaWkLVZ_HLwYQuPet_2vlxNF7AoYgX-XRufiOj0'
},
}
) /*end fetch */
.then(results => results.json())
.then(data => this.setState({ data: data }))
}
render() {
console.log(this.state.data);
return (
<div className="clientContainer">
{
this.state.data.map( item =>(
<div>
<span> {item.clientName} </span>
</div>
))
}
</div>
);
}
}
export default BuildingSimulation;
...所以我能够从 Segments 部分获取信息以显示在页面中,但是我如何还获取 json 文件标题中的 ID 和 totals 部分中的数据以显示在我的页面中?
解决方案
您只存储segment
来自 API 响应的数据。要访问其他数据,您需要将整个响应存储在state
. 所以改变
.then(data => this.setState({ data: data.segments }))
至
.then(data => this.setState({ data: data }))
现在您可以访问所有响应数据。
更新:执行此操作后,this.state.data
表示 json 数据。所以要访问segments
,使用this.state.data.segments
. 访问totals
、使用this.state.data.totals
等。
推荐阅读
- asp.net-core-webapi - 使用补丁请求 .Net Core 2.1 动态更改 Appsettings.Json
- c++ - 当值是非常量但使用常量表达式初始化时使用 constexpr?
- javascript - Firefox 需要对同一主机上的 Jquery-Get 进行授权
- javascript - 如何检查鼠标是否在 d3 geo 的实际地图范围内?
- android - 如何在 Android 上获取 Whatsapp 联系人的姓名
- javascript - 如何随机播放 JavaScript 数组?
- c# - 通过 OpenFileDialog 浏览设备并通过 FTP 下载
- asp.net-mvc-3 - 在 mvc 中的 IE 中打开新选项卡时,会话被覆盖
- javascript - .js 日期字符串 YYYY-MM-DD-HH-MM
- javascript - Javascript Fetch 未在请求标头中传递 Cookie,即使使用“同源”凭据