If you mutate the state directly it won't re-render. Instead of... [cart, setCart] = useState([1,2,3]) const updateCart = (item) => { prevCart = cart prevCart.push(item) setCart(prevCart) } Do this.... const updateCart = (item) => { let prevCart = [] cart.forEach(item => { prevCart.push(item) }); setCart(prevCart) }