Javascript 加载ReactJS页面时发送的API请求过多
可从Javascript 加载ReactJS页面时发送的API请求过多,javascript,reactjs,Javascript,Reactjs,可从https://api.corona-19.kr/ 我正在用ReactJS编写上述代码 进入网页时,API请求每秒重复30次。在哪里重复 如果代码很长,您需要其他代码,我会将其附加到下面的链接。 }) 我们需要知道您在哪里以及如何调用apirest?还要考虑在您的方法中添加代码>控制台.Trace以查找调用堆栈,并可以发现您的根因果问题是CORONANFORKORYAAPI的多重渲染。确保不会发生多次重新渲染。@Yanis git在useffect@nirbhaygp中调用它是正确的——O
https://api.corona-19.kr/
我正在用ReactJS编写上述代码
进入网页时,API请求每秒重复30次。在哪里重复
如果代码很长,您需要其他代码,我会将其附加到下面的链接。}) 我们需要知道您在哪里以及如何调用
apirest
?还要考虑在您的方法中添加<>代码>控制台.Trace以查找调用堆栈,并可以发现您的根因果问题是CORONANFORKORYAAPI的多重渲染。确保不会发生多次重新渲染。@Yanis git在useffect
@nirbhaygp中调用它是正确的——OP询问原因。我在您提供的代码中没有看到任何会导致多次执行API请求的内容。CoronaInfoKoreaApi
组件是否多次安装?
import React, { useState, useEffect } from 'react';
import axios from 'axios';
import LogoImg from '../img/logoimg.png'
function CoronaInfoKoreaApi() {
const serviceKey = "serviceKey "
const [info, setInfo] = useState([]);
const [todayInfo, setTodayInfo] = useState([]);
const [error, setError] = useState(null);
const [loading, setLoading] = useState(false);
const url = `https://api.corona-19.kr/korea/?serviceKey=${serviceKey}`;
const url2 = `https://api.corona-19.kr/korea/country/new/?serviceKey=${serviceKey}`
const apiRequest = async () => {
try {
// 요청이 시작 할 때에는 error 와 users 를 초기화하고
setError(null);
setTodayInfo(null);
setInfo(null);
// loading 상태를 true 로 바꿉니다.
setLoading(true);
const response1 = await axios.get(
url
);
const response2 = await axios.get(
url2
);
setTodayInfo(response2.data.korea); // 데이터는 response.data 안에 들어있습니다.
setInfo(response1.data); // 데이터는 response.data 안에 들어있습니다.
} catch (e) {
setError(e);
}
setLoading(false);
};
useEffect(() => {
apiRequest();
}, []);
const apiRequest = async () => {
try {
const res = await Promise.all([
axios.get(url),
axios.get(url2),
]);
const data = res.map((res) => res.data);
console.log(data.flat());
} catch {
throw Error("Promise failed");
}