json - 来自 API 的数据显示在控制台中,但没有显示在 DOM 中,为什么?
问题描述
我正在学习 React 和一些关于 API 的知识。我使用 Destiny 2 API 作为起始 API 来尝试了解它们是如何工作的。
这是我的 Api.js 文件:
import React, { Component } from 'react';
import './style.css';
import axios from 'axios';
class Api extends Component {
constructor(props) {
super(props);
this.state = {
data: [],
};
}
componentDidMount() {
let config = {
headers: {
'X-API-KEY': 'key-here',
},
};
axios
.get('https://www.bungie.net/Platform/Destiny2/4/Profile/4611686018484544046/?components=100', config)
.then((response) => {
console.log(response);
this.setState({
data: response.data,
});
});
}
render() {
const { item } = this.state;
return (
<div>
{Array.isArray(item) &&
item.map((object) => <p key={object.data}>{object.data.Response.profile.data.userInfo.displayName}</p>)}
</div>
);
}
}
export default Api;
API 中的数据作为包含嵌套数组的对象返回。我可以让数据显示在控制台中没问题。
这是响应对象输出到控制台的布局:
我正在尝试获取“displayName”的值并将其输出到 DOM 中,我做错了什么?
我尝试通过执行以下操作将数据作为 JSON 返回:
response => {return(data.json())}
并使用 json 对象进行迭代,{Object.keys(this.state.data).map((key) =>
但我仍然设法仅在控制台中获取数据,而不是在 DOM 中获取数据。
有什么似乎缺少的吗?我已经被这个问题困扰了好几天了!
编辑:这是 API 调用的全部响应
{
"Response": {
"profile": {
"data": {
"userInfo": {
"membershipType": 4,
"membershipId": "4611686018484544046",
"displayName": "Snizzy"
},
"dateLastPlayed": "2019-04-05T14:28:30Z",
"versionsOwned": 31,
"characterIds": [
"2305843009409505097",
"2305843009411764917",
"2305843009425764024"
]
},
"privacy": 1
}
},
"ErrorCode": 1,
"ThrottleSeconds": 0,
"ErrorStatus": "Success",
"Message": "Ok",
"MessageData": {}
}
解决方案
在渲染函数中,你解构你的状态,你有错误的属性。
const { item } = this.state;
应该const { data } = this.state;
更多关于解构的信息。
此外,您需要在此处进行更改:
编辑:实际上,您的数据甚至不是数组。您不必遍历它。
<div>
<p>{data.Response.profile.data.userInfo.displayName}</p>}
</div>
推荐阅读
- scala - 计算数据库调用所需时间的更好方法是什么?
- android - 获取应用程序的哈希
- android - 如果使用不同的语言(英语到阿拉伯语),如何更改 TextView 的重力
- python - 如何在图形人口模型中修复“**或 pow() 不支持的操作数类型:‘builtin_function_or_method’和‘float’”?
- c++ - 如何知道使用 valgrind 运行应用程序时使用的内存大小?
- excel - 当累积和达到某个值且条件 #2 时查找行
- oracle - 从配置文件中的一个变量中读取多个值。我想用 ksh 连接 oracle db 并进行查询
- python-3.x - 为什么在使用 STOMP 在 Python ActiveMQ 侦听器中调用订阅后使用睡眠方法
- laravel - 如何从模型绑定显示方法中检索特定列数据?
- video - Fffmpeg drawtext过滤器创建大输出文件并占用高CPU?