Estudié el ejemplo de reacción redux ( carrito de la compra ) y vi esta implementación de la acción addToCart .
La pregunta es, ¿de dónde vienen los argumentos dispatch y getState ?
export const addToCart = productId => (dispatch, getState) => { if (getState().products.byId[productId].inventory > 0) { dispatch(addToCartUnsafe(productId)) } }Traté de copiarlo en mi ejemplo , pero no puedo hacer que funcione.
PD: puedo hacer esto con mapDispatchToProps en mi ejemplo
Provienen del middleware thunk. Permite a los creadores de acciones redux no solo devolver objetos simples (con una propiedad de tipo), sino también funciones asíncronas. El middleware llama a estas funciones asíncronas y pasa dispatch y getState como argumentos. Lo que a su vez le permite enviar muchas otras acciones, observar el estado actual y, en general, tener un control preciso sobre el flujo asíncrono. Thunk es solo uno de los muchos middlewares que admiten cosas asíncronas dentro de las acciones de redux.