javascript - 无法从 JSON 数据访问嵌套对象
问题描述
我在 React 中有以下功能组件:
function GetData() {
const [randomDataJSON, setRandomDataJSON] = useState('');
const url = 'https://randomuser.me/api/';
const getData = () => {
axios
.get(`${url}`)
.then((results) => {
const userData = results.data.results;
setRandomDataJSON(JSON.stringify(userData, null, 2));
})
.catch((err) => console.error(err));
};
return (
<div>
<h3>GetData Component</h3>
<pre>{randomDataJSON[0].name.first}</pre>
<button onClick={getData}>Get Data</button>
</div>
);
}
export default GetData;
来自 API 的 JSON 数据如下:
[
{
"gender": "female",
"name": {
"title": "Miss",
"first": "Barbara",
"last": "Sullivan"
},
...
我想通过在标签中使用来访问和显示first name
来自 API 的 JSON 数据。但是,我不断收到以下错误消息:{randomDataJSON[0].name.first
<pre>
TypeError: Cannot read properties of undefined (reading 'name')
解决方案
您正在将 json 字符串设置为randomDataJSON
状态变量,并尝试使用 JSON 字符串作为对象。你可以试着console.log(randomDataJSON)
证实我的怀疑。
我认为你不应该首先将你的数据对象转换为 json,所以setRandomDataJSON(JSON.stringify(userData, null, 2));
将是setRandomDataJSON(userData)
;
function GetData() {
const [randomData, setRandomData] = useState('');
const url = 'https://randomuser.me/api/';
const getData = () => {
axios
.get(`${url}`)
.then((results) => {
const userData = results.data.results;
setRandomData(userData, null, 2);
})
.catch((err) => console.error(err));
};
return (
<div>
<h3>GetData Component</h3>
<pre>{randomData[0].name.first}</pre>
<button onClick={getData}>Get Data</button>
</div>
);
}
export default GetData;
推荐阅读
- jenkins - Jenkins 流水线执行顺序
- autodesk-forge - 如何获取包含空格的衍生文件?
- java - postgresql JDBC 驱动程序使用客户端时区
- uwp - UWP(桌面桥)应用程序和用户可下载的可执行文件
- stata - xt_tis 是做什么的?
- javascript - 如何在浏览器上运行 node.js 项目?
- java - 如何在 jsf 表单页面中强制执行 reCAPTCHA
- android - CoordinatorLayout 末尾的浮动操作按钮
- amazon-web-services - 如何在 AWS Route53 中将 WWW 添加到域?
- javascript - 为什么此返回不适用于 ajax