当前位置: 首页 > 知识库问答 >
问题:

如何在React中消除useEffect的缺失依赖警告

空翼
2023-03-14

从“反应”中导入{useEffects, useState};

常量使用斯皮斯 = () =

useEffect(() => {
    fetch("http://localhost:5000/spices")
        .then(res => res.json())
        .then(data => setSpices(data))

});
return [spices, setSpices];

}

导出默认使用小工具;

共有1个答案

姜彬郁
2023-03-14

依赖数组告诉< code>useEffect何时运行:

useEffect(() => {
  // do smth
}, [var1, var2 ...]);

每当该数组中的任何变量(var1等)发生变化时,它都会导致use效中的代码执行。如果您不提供此数组,use效会在每次渲染时执行其代码。

你可以这样做:

function MyFetch(url) {
  const [data, setData] = useState();

  useEffect(() => {
    fetch(url)
      .then((res) => res.json())
      .then((data) => setData(data));
  }, [url]);

  return [data];
}

然后你可以这样使用它:

export default function App() {
  const data = MyFetch("https://jsonplaceholder.typicode.com/todos/1");
  console.log(data[0]);

  return (
    <div>
      {Object.keys(data[0]).map((key) => (
        <div>
          {key} - {data[0][key] + ""}
        </div>
      ))}
    </div>
  );
}

useffect是一个棘手的问题useffect在每次渲染后运行(因为您没有依赖数组),并且setState会导致重新渲染,因此从usaffect内部设置状态时必须小心一点。目前,在您的代码中,发生的情况是:

  1. 使用效果运行
  2. setState被执行,这会导致重新渲染
  3. useEffects再次运行,因为重新渲染

为了避免这种情况,不要从< code>useEffect内部更新会触发< code>useEffect重新运行的内容。

这里是沙盒链接:https://codesandbox.io/s/determined-goldstine-jx1r81?file=/src/App.js:280-567

我看到您正在返回<code>setPices<code>函数,您的目标是什么?如果您希望<code>useSpices就足够了,但我想不出为什么您也要返回<code<setscies

 类似资料:
  • 当我在React应用程序中使用ScrollToTop组件时,浏览器中会出现以下警告: 第12:6行:React Hook useEffect缺少依赖项:“history”。包括它或删除依赖项数组react hooks/dep 我可以做什么更改来删除此警告?谢谢

  • 我在useeffect钩子上得到以下错误。 React Hook use效应有一个缺失的依赖项:当前页面。要么包含它,要么删除依赖array.eslintreact-钩子/穷举-deps 你知道我为什么会得到这个吗? }

  • 我在构建我的应用程序时遇到此问题。有人知道怎么回事吗? React Hook useEffect缺少依赖项:“conectar”。包括它或删除依赖项数组react hooks/dep

  • 问题内容: 使用React 16.8.6(在以前的版本16.8.3中很好),当我尝试防止在获取请求上发生无限循环时,出现此错误 我一直找不到停止无限循环的解决方案。我想远离使用。我确实在https://github.com/facebook/react/issues/14920找到了这个讨论,在这里可能的解决方案是我不确定自己在做什么,所以我还没有尝试实现它。 我有这个当前设置,React钩子us

  • 使用React 16.8.6(在以前的版本16.8.3上很好)时,当我试图防止fetch请求上的无限循环时,会出现这个错误 我一直找不到一个解决方案来停止无限循环。我希望不要使用。我确实找到了这个讨论https://github.com/facebook/react/issues/14920,其中一个可能的解决方案是我对自己在做什么不太有信心,所以我还没有尝试实现它。 我有这个当前的设置React

  • 在我的react/redux应用程序中,每次安装组件时,我都会调用一个操作从redux中的状态检索数据。我的方法行不通 下面是我得到的错误: React Hook use效应有一个缺失的依赖项:道具。要么包含它,要么删除依赖数组。然而,当任何道具发生变化时,“道具”都会发生变化,因此首选的修复方法是将“道具”对象的结构分解为在use效应调用之外的对象,并指称在use效应反应挂钩/穷举deps中的那