首页 > 解决方案 > state in useEffect 第二个参数 无限循环

问题描述

我有一小段代码,我想我做错了

const [orders, setOrders] = useState([])

useEffect(() => {
  fetch('/getOrders',{
      headers:{
       "Content-Type":"application/json",
       "Authorization": "Bearer "+localStorage.getItem("jwt")

      }
  }).then(res=>res.json())
  .then(orderList=>{
      setOrders(orderList)
      //console.log("myAdmin",orderList)

    
  }).catch(err=>{
      console.log("Error in Catch",err)
  })
  }, [orders])

这里数据会自行超时更新,我希望每次获取数据与现有状态不同时更新我的​​状态,但无论数据是否不同,状态都会不断更新,使组件无限重新渲染。有解决方案吗?

标签: reactjsmongodbreact-hooksfetch-apimern

解决方案


尝试使用 prevState 参数设置状态,因此您不必包含任何依赖项。

setOrders((prevState) => ({
   ...prevState, orderList
}))

推荐阅读