axios 如何显示GET请求中的数据列表

mrfwxfqh  于 2023-10-18  发布在  iOS
关注(0)|答案(6)|浏览(163)

我试图通过点击Get studentData从我的服务器获取数据。如控制台浏览器中的图片所示,我正在获取数据,但数据未显示在浏览器中。

这是我的get data组件的代码:

  1. import React, { useState } from 'react';
  2. import axios from 'axios'
  3. export default function Datateacher() {
  4. const [result, setResult] = useState([]);
  5. const handleClick = async () => {
  6. const fetchData = async () => {
  7. const result = await axios.get(`http://localhost:8000/state`, { mode: 'no-cors' });
  8. console.log(result.data)
  9. setResult(result.data)
  10. }
  11. fetchData();
  12. };
  13. return (
  14. <div>
  15. <button type="button" onClick={handleClick} >
  16. Get studentdata
  17. </button>
  18. <ul>
  19. <h3>
  20. {result.map(results => results.data)}
  21. </h3>
  22. </ul>
  23. </div>
  24. )
  25. }
cczfrluj

cczfrluj1#

有很多地方需要改进才能运行代码,
1.你没有从map函数返回数据。您需要从map返回JSXElement。
1.您正在创建不必要的方法fetchData
下面是你的工作代码:

  1. import { useState } from 'react';
  2. import axios from 'axios'
  3. export default function Datateacher() {
  4. const [result, setResult] = useState([]);
  5. const handleClick = async () => {
  6. const result = await axios.get(`http://localhost:8000/state`, { mode: 'no-cors' });
  7. setResult(result.data)
  8. };
  9. return (
  10. <div>
  11. <button type="button" onClick={handleClick} >
  12. Get studentdata
  13. </button>
  14. <ul>
  15. {result.map((result) => <h1>{result.data}</h1>)}
  16. </ul>
  17. </div>
  18. )
  19. }
展开查看全部
6qqygrtg

6qqygrtg2#

您正在尝试呈现data字段,该字段在result中不存在。
试试这样的方法:

  1. <h3>
  2. {
  3. result.map(item => item.id)
  4. }
  5. </h3>
ggazkfy8

ggazkfy83#

你提供的代码中有几个地方是错误的。
首先,为什么你的fetchData()函数位于handleClick()函数中?
您可以删除handleClick()函数。它不是必需的,因为它只是用来调用另一个函数(fetchData())。

  1. const fetchData = async () => {
  2. const result = await axios.get(`http://localhost:8000/state`, { mode: 'no-cors' });
  3. setResult(result.data)
  4. };

因此,在单击按钮时,您只需调用fetchData()
此外,当您检索多个项目时,您的状态应该是[results, setResults](可读性很重要)。
然后你Map你的元素,像这样:

  1. results.map(result => result)

首先,你有一个收集,你超越,然后你有一个项目。
最后一件事,你试图在结果项中获取一个名为data的键,但这个键不存在。试试result.id

展开查看全部
7y4bm7vi

7y4bm7vi4#

您将以学生对象数组的形式获取数据。如果你想显示数据,那么你需要解析数组,然后解析各个对象的属性。对于ex:results.data[0].id,这将显示第一个student对象的ID。

v1uwarro

v1uwarro5#

我很抱歉代码错误,因为我不能清楚地看到fetchData()是完全不必要的,这是因为我之前使用了另一个方法。但它现在工作,这是数据属性,给了问题,谢谢!

i1icjdpr

i1icjdpr6#

您没有正确Mapresult状态(项目上没有data字段)。下面是一个显示学生姓名的例子:

  1. import React, { useState } from "react";
  2. import axios from "axios";
  3. export default function Datateacher() {
  4. const [result, setResult] = useState([]);
  5. const handleClick = async () => {
  6. const fetchData = async () => {
  7. const result = await axios.get(`http://localhost:8000/state`, { mode: "no- cors" });
  8. console.log(result.data);
  9. setResult(result.data);
  10. };
  11. fetchData();
  12. };
  13. return (
  14. <div>
  15. <button type="button" onClick={handleClick}>
  16. Get studentdata
  17. </button>
  18. <ul>
  19. <h3>
  20. {result.map((item) => (
  21. <p>{item.name}</p>
  22. ))}
  23. </h3>
  24. </ul>
  25. </div>
  26. );
  27. }
展开查看全部

相关问题