首页 > 解决方案 > 等效的useMemo异步功能?

问题描述

我只需要在我的应用程序中进行一次 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);

标签: reactjsuse-effectuse-statereact-usememo

解决方案


推荐阅读