Mi resultado es ver item.acf.count como string y no como number . ¿Cómo puedo convertir esto en número?
Aquí está la función a continuación.
increaseItem = (id) => { const { cart } = this.state; cart.forEach(item => { if (item.id === id) { item.acf.count += 1 } }) this.setState({ cart:cart }) }Mi resultado es ver item.acf.count como una cadena y no como un número. por favor como puedo convertir es a numero
Debe asegurarse de que el estado inicial item.acf.count sea un tipo de número para que esta operación count: item.acf.count + 1 funcione correctamente y devuelva un tipo de número. Siempre que sus actualizadores de estado mantengan el estado invariable de item.acf.count como un número, debería funcionar como se esperaba.
Además, el controlador de increaseItem de artículos está mutando el estado del carrito y no está creando nuevas referencias de matriz/objeto.
increaseItem = (id) => { const { cart } = this.state; // <-- cart is reference to cart state cart.forEach(item => { if (item.id === id) { item.acf.count += 1; // <-- mutation! } }); this.setState({ cart: cart // <-- cart state reference back into state }) } En su lugar, debe copiar superficialmente el carrito y luego también copiar superficialmente el elemento del carrito ( cualquier otra propiedad anidada ) que desee actualizar. También sugiero usar una actualización de estado funcional para que esté actualizando correctamente desde el estado anterior y no cualquier valor de estado cerrado en el alcance de devolución de llamada de increaseItem de elementos.
increaseItem = (id) => { this.setState(prevState => ({ cart: prevState.cart.map(item => item.id === id ? { ...item, acf: { ...item.acf, count: item.acf.count + 1 } } : item), })); }