Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用钩子的React查询抛出错误;未捕获错误:重新渲染过多。React限制渲染的数量以防止无限循环;_Javascript_Reactjs_React Hooks_React Query - Fatal编程技术网

Javascript 使用钩子的React查询抛出错误;未捕获错误:重新渲染过多。React限制渲染的数量以防止无限循环;

Javascript 使用钩子的React查询抛出错误;未捕获错误:重新渲染过多。React限制渲染的数量以防止无限循环;,javascript,reactjs,react-hooks,react-query,Javascript,Reactjs,React Hooks,React Query,我正在从事一个React JS项目,该项目使用React查询、React挂钩和功能组件。但当我对API调用使用react查询时,它抛出了错误 这是我的组件以及如何在其中使用查询 const App = () => { const [ list, updateList ] = useState([]) const info = useQuery(["item-list"], getList, { retry: false, refetchOnW

我正在从事一个React JS项目,该项目使用React查询、React挂钩和功能组件。但当我对API调用使用react查询时,它抛出了错误

这是我的组件以及如何在其中使用查询

const App = () => {
   const [ list, updateList ] = useState([])
   const info = useQuery(["item-list"], getList, {
    retry: false,
    refetchOnWindowFocus: false,
  })

  if (info.status == "success") {
     updateList(info.data)
  }
    return (
       //view components here
    )
}
这是我的getList API调用逻辑

export const getList= async () => {
  const { data } = await api.get("8143487a-3f2a-43ba-b9d4-63004c4e43ea");
  return data;
}
当我运行代码时,出现以下错误:

react dom.development.js:14815未捕获错误:重新渲染过多。React限制渲染的数量以防止无限循环


我的代码出了什么问题?

这里出现错误的主要原因是,一旦您有了
info.status==“success”
as
true
,您就在无限循环中运行
if
语句中的代码块。然后在每个渲染中调用
更新列表
,触发另一个渲染

我可能会在这里使用
useffect
hook来监听
info
的更改,如下所示:

useEffect(() => {
  if (info.status == "success") {
     updateList(info.data)
  }
}, [info])

您应该从

的主体中删除
if
语句,这是一个完美的解决方案。谢谢