Estoy tratando de hacer una solicitud de publicación dentro de una función cada vez que hago clic en un botón. aqui esta el codigo del boton
<Button onClick={handleClick}>Add to Cart</Button>y aquí está la función `handleClick:
const handleClick = (event) => { event.preventDefault(); props.postCart(itemData.product_name, itemData.product_price); } y aquí muestro el código de la función mapDispatchToProps :
const mapDispatchToProps = dispatch => { return { postCart: (productName, productPrice) => dispatch(postAddToCart(productName, productPrice)) } } finalmente el código de postAddToCart :
export const postAddToCart = (productName, productPrice) => { const email = sessionStorage.getItem('email'); return (dispatch) => { dispatch(productName, productPrice); //REST API endpoint axios.post('http://localhost:8000/api/auth/add-to-cart', { email:email, }) .then(resp => { dispatch({ type: actionTypes.ADDED_TO_CART, status: resp.status }); }) .catch(resp => { dispatch({ type: actionTypes.ADDED_TO_CART, status: "FAILED" }); }) } }Pero cada vez que hago clic en el botón Agregar al carrito, aparece el siguiente error:
Error: Actions must be plain objects. Use custom middleware for async actions. sabiendo que estoy usando el middleware redux-thunk .
¿Puede decirme cuál es el problema y cómo puedo solucionarlo? gracias ^^. si me perdí algo díganmelo en comentarios para agregarlo ^^
Su función postAddToCart() devuelve un "despachador", es decir, una función que espera el dispatch como argumento.
El error es que está intentando enviar este "despachador", en lugar de una "acción":
// wrong: calling 'dispatch()' postCart: (productName, productPrice) => dispatch(postAddToCart( ... )) // correct: calling the returned dispatcher and pass 'dispatch' as argument postCart: (productName, productPrice) => postAddToCart( ... )(dispatch)