Tengo una tienda redux que contiene varios estados que se completa con la misma API pero con varios puntos finales.
Tengo una aplicación de reacción con varios componentes, que acceden a uno de estos estados, y todos llaman a la API correspondiente sin montaje mediante el envío de una función asíncrona (redux-thunk) a la tienda.
En App.js se utilizan múltiples componentes.
Problema: cuando todos los componentes se montan, llaman a la API al mismo tiempo y superan el número máximo de llamadas permitidas durante el breve período de tiempo. Por lo tanto, todas las llamadas responden con el código de estado 429: Demasiadas solicitudes.
* Notas adicionales: estoy creando una aplicación web de noticias y estoy usando gnews.io api con múltiples consultas de búsqueda y puntos finales para obtener datos.
En su caso, creo que un enfoque sería crear un tipo de solicitud y usarlo en su estado en lugar del valor sin procesar devuelto desde el punto final, algo así como:
type TApiRequestState<T> = {pending: boolean, response: T}Cuando envía una acción que activará el punto final en thunks, configuraría el estado de API para cargar. Después de eso, todo lo que necesita hacer es verificar si la solicitud ya no se está ejecutando en los otros componentes.
if (!value.pending && !value.response) { dispatch(thunksFn) }En teoría, podría enviar todas las solicitudes iniciales en un componente principal y solo procesar estos componentes secundarios cuando finalicen las solicitudes iniciales. Pero esto depende de un proyecto a proyecto en base a la OMI.