reactjs 我如何解决“太多的重新渲染,React限制渲染的数量以防止无限循环”的问题

vcirk6k6  于 2022-12-18  发布在  React
关注(0)|答案(2)|浏览(139)

我试着遍历一个对象然后把里面的数字加起来。

const [cartCount, setCartCount] = useState(0)

  for (let i = 1; i <= Object.keys(cartItems).length; i++) { //cartItems is the object
     setCartCount(cartCount + cartItems[i])
  }

但是任何更新状态的尝试都会给我带来太多渲染的错误。那么我该如何修复这个错误呢?

jv2fixgn

jv2fixgn1#

您可以简单地用值初始化状态。

const initialCount = Object.values(cartItems).reduce((acc, value) => acc + value, 0)

const [cartCount, setCartCount] = useState(initialCount)

但是如果只需要存储一次,甚至不需要状态,则可以保留const

nle07wnf

nle07wnf2#

这错误的原因是那你re-render这状态在一个循环.让-mutate你的数据然后更新状态.

const [cartCount, setCartCount] = useState(0)

  const handle = ()=>{
  let newCount = cartCount;

  for (let i = 1; i <= Object.keys(cartItems).length; i++) { 
  
  newCount = cartCount + cartItems[i];
 }
 setCartCount(newCount)
 }

相关问题