Я пытаюсь перестроить некоторые компоненты класса, которые у меня есть, в качестве функциональных компонентов, используя перехватчики React для выполнения выборки.
Я могу получить данные, это нормально, но он вызывает мой API каждые несколько миллисекунд, я просто хочу, чтобы он извлекал данные и останавливался, как это было бы в компоненте класса с componentDidMount.
Думаю, я понимаю, почему он это делает (fetchData () внутри функции означает, что он будет продолжать вызывать сам себя), но я не уверен, как это исправить.
Я попытался добавить setInterval, изменить порядок и переместить fetchData () за пределы функции (компонент не рендерится, потому что тогда он был неопределенным).
const MyFunction = () => {
const [apiResponse,setApiResponse] = useState({})
async function fetchData() {
const res = await fetch(`http://localhost:9000/example`,{
method: 'POST',
mode: 'cors',
body: JSON.stringify({date: '20190707'}),
headers: {'content-type': 'application/json',
credentials: 'include'
}
})
res
.json()
.then(res => setApiResponse(res))
}
useEffect(() => {
fetchData();
});
var queryResult = apiResponse['units']
return (
<React.Fragment>
<CardHeader color={"info"} stats icon>
<CardIcon color={"info"}>
<Icon>{"trending_up"}</Icon>
</CardIcon>
<p className={''}>Drop In</p>
<h3 className={''}>
{queryResult} <small>Units</small>
</h3>
</CardHeader>
<CardFooter ></CardFooter>
</React.Fragment>
);
}