Intento usar el método find() pero obtengo
cartItems.find no es una función
¿lo que sucede? ¿Y como arreglarlo?
import React, {useState} from 'react' function cart() { const [cartItems, setCartItems] = useState([]) const add = (pro) => { const exist = cartItems.find((item) => { return item.id === pro.id; }); if (exist) { setCartItems( cartItems.find((item) => { return item.id === exist.id ? {...exist, qnty: exist.qnty + 1} : item; }) ); } else { setCartItems([...cartItems, {...pro, qnty: 1}]); } }; return ( <div>cart</div> ) } export default cartEsto sucede porque cartItems ya no es una matriz.
Según aquí :
El método find() devuelve el primer elemento de la matriz proporcionada que satisface la función de prueba proporcionada.
En esta parte de tu código -
setCartItems( cartItems.find((item) => { return item.id === exist.id ? {...exist, qnty: exist.qnty + 1} : item; }) ); Configura cartItems para que sea el primer elemento de su condición allí con find() . Entonces, en el próximo render, cartItems ya no es una matriz, sino un artículo. Que no tienen find .