我试图通过点击Get studentData
从我的服务器获取数据。如控制台浏览器中的图片所示,我正在获取数据,但数据未显示在浏览器中。
这是我的get data组件的代码:
import React, { useState } from 'react';
import axios from 'axios'
export default function Datateacher() {
const [result, setResult] = useState([]);
const handleClick = async () => {
const fetchData = async () => {
const result = await axios.get(`http://localhost:8000/state`, { mode: 'no-cors' });
console.log(result.data)
setResult(result.data)
}
fetchData();
};
return (
<div>
<button type="button" onClick={handleClick} >
Get studentdata
</button>
<ul>
<h3>
{result.map(results => results.data)}
</h3>
</ul>
</div>
)
}
6条答案
按热度按时间cczfrluj1#
有很多地方需要改进才能运行代码,
1.你没有从map函数返回数据。您需要从
map
返回JSXElement。1.您正在创建不必要的方法
fetchData
。下面是你的工作代码:
6qqygrtg2#
您正在尝试呈现
data
字段,该字段在result
中不存在。试试这样的方法:
ggazkfy83#
你提供的代码中有几个地方是错误的。
首先,为什么你的
fetchData()
函数位于handleClick()
函数中?您可以删除
handleClick()
函数。它不是必需的,因为它只是用来调用另一个函数(fetchData()
)。因此,在单击按钮时,您只需调用
fetchData()
。此外,当您检索多个项目时,您的状态应该是
[results, setResults]
(可读性很重要)。然后你Map你的元素,像这样:
首先,你有一个收集,你超越,然后你有一个项目。
最后一件事,你试图在结果项中获取一个名为
data
的键,但这个键不存在。试试result.id
。7y4bm7vi4#
您将以学生对象数组的形式获取数据。如果你想显示数据,那么你需要解析数组,然后解析各个对象的属性。对于ex:results.data[0].id,这将显示第一个student对象的ID。
v1uwarro5#
我很抱歉代码错误,因为我不能清楚地看到fetchData()是完全不必要的,这是因为我之前使用了另一个方法。但它现在工作,这是数据属性,给了问题,谢谢!
i1icjdpr6#
您没有正确Map
result
状态(项目上没有data
字段)。下面是一个显示学生姓名的例子: