使用 React 的数据 Fatch (Nextjs)

Data Fatch with React (Nextjs)

提问人:giorgia dc 提问时间:9/23/2023 最后编辑:marcelgiorgia dc 更新时间:9/28/2023 访问量:82

问:

我正在使用 next.js 并且正在从 json 获取数据。现在我看不到来自json的数据(当我刷新时会发生变化),例如在表的第一个框中。

有人可以帮我吗?我试了这么多天,我无法解决。

import styles from '../styles2/Tabelle.module.css';
import { useEffect, useState } from 'react';

export default function Fetch() {
    'use client';
    const [appState, setAppState] = useState([]);
    useEffect(() => {
        const fetchData = async () => {
            const response = await fetch('https://run.mocky.io/v3/f3bf41f3-c60a-47f8-9386-243989bead65');
            const json = await response.json();
            setAppState(json);
        };
        fetchData();
    }, []);

    const date = (
        <ul>
            {appState.map((item) => (
                <li key={item.id}> {item.id} </li>
            ))}
        </ul>
    );
    return (
        <div>
            <table>
                <thead>
                    <tr>
                        <th>ID ESECUZIONE </th> <th>NOME PROCESSO</th> <th>HOST</th> <th>ANDAMENTO</th> <th>DURATA</th> <th>AVANZAMENTO</th>{' '}
                    </tr>
                </thead>
                <tbody>
                    <tr className={styles.righeEsecuzioni}>
                        <td> {date.key} </td>{' '}
                    </tr>
                </tbody>
            </table>
        </div>
    );
}
reactjs next.js fetch-api nsfetchrequest urlfetch

评论

0赞 Hard 9/23/2023
你有没有检查过你 Get URL 正在发送响应 它说 cors 错误,意味着你没有获取响应的权限

答:

-1赞 Usama Maqsood 9/23/2023 #1

响应字符串在开始和结束中不包含数组参数 [ ] 这就是解析 JSON 导致错误的原因

使用 Axios 库,你可以这样做

导入库

 import axios from 'axios';

获取数据

 const response = await axios.get(
    'https://run.mocky.io/v3/f3bf41f3-c60a-47f8-9386-243989bead65'
  );

现在在开头和结尾添加括号

 const string = '[' + response.data + ']';

现在 setState

setAppState(JSON.parse(string));

整体代码如下所示

 import { useEffect, useState } from 'react';
import axios from 'axios';

export default function Fetch() {
  'use client';
  const [appState, setAppState] = useState([]);
  useEffect(() => {
    const fetchData = async () => {
      const response = await axios.get(
        'https://run.mocky.io/v3/f3bf41f3-c60a-47f8-9386-243989bead65'
      );
      const string = '[' + response.data + ']';
      setAppState(JSON.parse(string));
    };
    fetchData();
  }, []);
  const date = (
    <ul>
      {appState.map((item: any) => (
        <li key={item.id}> {item.id} </li>
      ))}
    </ul>
  );
  return (
    <div>
      <table>
        <thead>
          <tr>
            <th>ID ESECUZIONE </th> <th>NOME PROCESSO</th> <th>HOST</th>{' '}
            <th>ANDAMENTO</th> <th>DURATA</th> <th>AVANZAMENTO</th>{' '}
          </tr>
        </thead>
        <tbody>
          <tr>
            <td> {date} </td>{' '}
          </tr>
        </tbody>
      </table>
    </div>
  );
}

按日期排序

使用 dayjs 库

在字符串变量后面添加此内容

const response = await axios.get(
    'https://run.mocky.io/v3/f3bf41f3-c60a-47f8-9386-243989bead65'
  );
  const string = '[' + response.data + ']';
  const parsedString = JSON.parse(string);
  parsedString.sort((date1: any, date2: any) => {
    return dayjs(date1.Giorno).isBefore(dayjs(date2.Giorno)) ? -1 : 1;
  });
  setAppState(parsedString);


 

评论

0赞 giorgia dc 9/23/2023
太棒了,但我现在有一个这样的列表(ID ESECUZIONE:8Bryce88 3Deontae16 5Jarrod23 7Jaydon86 7Manley17 3Bertha47 6Minerva25 1Vicenta26 0Anita31 4Julius58 ...)我怎么能在盒子表里随机有一个“ID”?
0赞 Usama Maqsood 9/23/2023
您可以使用 Math.random() 作为数组的随机索引,然后显示该索引 ID
0赞 Usama Maqsood 9/23/2023
我不明白你的第二个问题?
0赞 giorgia dc 9/23/2023
我解决了第二个问题,非常感谢:)
1赞 Usama Maqsood 9/27/2023
你解决了吗?对不起,我很忙。