提问人:giorgia dc 提问时间:9/23/2023 最后编辑:marcelgiorgia dc 更新时间:9/28/2023 访问量:82
使用 React 的数据 Fatch (Nextjs)
Data Fatch with React (Nextjs)
问:
我正在使用 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>
);
}
答:
-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
你解决了吗?对不起,我很忙。
评论