Javascript 使用钩子的React查询抛出错误;未捕获错误:重新渲染过多。React限制渲染的数量以防止无限循环;
我正在从事一个React JS项目,该项目使用React查询、React挂钩和功能组件。但当我对API调用使用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
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”
astrue
,您就在无限循环中运行if
语句中的代码块。然后在每个渲染中调用更新列表
,触发另一个渲染
我可能会在这里使用useffect
hook来监听info
的更改,如下所示:
useEffect(() => {
if (info.status == "success") {
updateList(info.data)
}
}, [info])
您应该从
的主体中删除if
语句,这是一个完美的解决方案。谢谢