Javascript setState in useffect循环应用程序
为什么我会得到无限循环错误?React是指标有Javascript setState in useffect循环应用程序,javascript,reactjs,lodash,Javascript,Reactjs,Lodash,为什么我会得到无限循环错误?React是指标有*的行: function Blog(){ const[blog,setBlog]=useState({}); const query=useQuery(); 异步函数takeBlog(查询){ const_data=await(await fetch(`${root}/api/blog/${query}').json(); console.log(_data.blog) setBlog(u.get(_data,'blog',{}));//* } u
*
的行:
function Blog(){
const[blog,setBlog]=useState({});
const query=useQuery();
异步函数takeBlog(查询){
const_data=await(await fetch(`${root}/api/blog/${query}').json();
console.log(_data.blog)
setBlog(u.get(_data,'blog',{}));//*
}
useffect(()=>{
takeBlog(查询);
}, []);
返回(
);
}
导出默认博客;
给你一个解决方案
function Blog(){
const[blog,setBlog]=useState({});
const query=useQuery();
异步函数takeBlog(查询){
const_data=await(await fetch(`${root}/api/blog/${query}').json();
console.log(_data.blog)
setBlog(u.get(_data,'blog',{}));//*
}
useffect(()=>{
const keys=Object.keys(blog);
如果(!keys.length){
takeBlog(查询);
}
}, []);
返回(
);
}
导出默认博客代码>不是一个直接的答案,但根据您所拥有的,我不确定您是否需要useState
和useffect
钩子的所有复杂性。似乎blog
从未更改,而且takeBlog
只被调用过一次。这难道不是:constquery=useQuery()
const\u data=await(await-fetch(
${root}/api/blog/${query}).json()
const blog=u.get(_data,'blog',{})
然后完全删除useState
和useffect
挂钩。编辑:对糟糕的注释格式表示歉意。@Tom,很可能组件会变得更大,并且会包含状态变量,因此在任何情况下,我都必须返回到这个实现。此外,官方文件说,在提出请求的情况下,我们必须做到这一点。