我只需要在我的应用程序中进行一次 HEAVY(需要 .then() 语法)API 调用。我所拥有的工作,使用 useState 和 useEffect,但是当上下文重新加载时,它会再次调用 API。
有没有办法使用 useMemo 重写它以使其工作,所以如果上下文重新呈现,它可以使用保存的响应而不是再次调用 API?
import React, { useState, useEffect } from 'react';
import fetchData from 'utils/fetchData';
export MyContext = () => {
const [data, setData] = useState(null);
useEffect(()=> {
fetchData().then(res=> setData(res));
},[]);
return(
{/*... */}
);
}
我分别尝试了这些无济于事...
const response = useMemo(async () => await fetchData(),[]);
const response = useMemo(() => fetchData(), []);
const response = useMemo(fetchData(), []);
// Also separately tried in fetchData.js...
export default React.memo(fetchData);