reactjs - 即使获取数据没有改变,UseEffect 仍然运行
问题描述
我有这个 UseEffect() 代码,即使我通过了第二个参数,即使数据没有改变,它也会继续重新渲染,知道吗?希望尽快得到解决方案(MERN)
前端
const [qty, setQty] = useState([])
useEffect(() => {
fetch('/QtyCheck',{
headers:{
"Content-Type":"application/json"
}
})
.then(res=>res.json())
.then(qtyValue=>{
setQty(qtyValue)
})
},[qty])enter code here
后端
router.get('/QtyCheck',(req,res)=>{
Post.find({},{qty:1,minT:1,criT:1, code:1,name:1,isDisable:1})
.then(postFind=>{
if(postFind.length===0){
res.json("nil")
}else{
res.json(postFind)
}
}).catch(noPost=>{
res.json("Error",noPost)
})
})
解决方案
我认为您在这里进行了无限循环,因为您如何设置括号的结尾[qty]
render > useEffect > fetchData > [Qty](表示数据变化)>re-render >useEfect > 依此类推
这里最重要的部分是空括号 []
相反,您可以创建一个单独的函数,例如:
const fetchdata = () =>
{
fetch('/QtyCheck',{
headers:{
"Content-Type":"application/json"
}
})
.then(res=>res.json())
.then(qtyValue=>{
setQty(qtyValue)
})
}
useEffect(()=>{
fetchdata()
},[])`
推荐阅读
- docker - 用于 docker 容器的 Nginx proxy_reverse
- javascript - fs.appendFileSync 返回“未定义”
- sql - 根据多行更新列值
- c++ - 无法输入名称(C++、结构)
- python - 用 open(file, 'w+') 重写文件不附加
- laravel-6 - [Route: projects.edit] [URI: projects/{project}/edit] Laravel 6.3 缺少必需的参数
- python - TabError 缩进中制表符和空格的使用不一致
- android - 将 textField 结束约束设置为 parentView 中心 X 使用约束布局
- android - 如何在 Unity Android 插件中发现蓝牙设备?
- assembly - 在程序集引导加载程序中获取用户输入