我试着遍历一个对象然后把里面的数字加起来。
const [cartCount, setCartCount] = useState(0) for (let i = 1; i <= Object.keys(cartItems).length; i++) { //cartItems is the object setCartCount(cartCount + cartItems[i]) }
但是任何更新状态的尝试都会给我带来太多渲染的错误。那么我该如何修复这个错误呢?
jv2fixgn1#
您可以简单地用值初始化状态。
const initialCount = Object.values(cartItems).reduce((acc, value) => acc + value, 0) const [cartCount, setCartCount] = useState(initialCount)
但是如果只需要存储一次,甚至不需要状态,则可以保留const
const
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) }
2条答案
按热度按时间jv2fixgn1#
您可以简单地用值初始化状态。
但是如果只需要存储一次,甚至不需要状态,则可以保留
const
nle07wnf2#
这错误的原因是那你re-render这状态在一个循环.让-mutate你的数据然后更新状态.