javascript - ¿Puedo enviar una llamada AJAX en React y Redux sin creadores ni reductores de acción?
reactjs (2)
¡Absolutamente puede enviar llamadas AJAX directamente desde componentes!
Redux es una herramienta para hacer que el estado compartido esté disponible globalmente para múltiples componentes y se haya cambiado de manera predecible. En cualquier caso, cuando no encuentre esto necesario, no lo haga.
Mantener llamadas AJAX en creadores de acciones es conveniente cuando diferentes componentes realizan las mismas solicitudes de API y luego cambian el estado de manera similar. También es conveniente si desea evitar disparar una solicitud cuando ya hay algunos datos almacenados en la memoria caché disponibles, y desea mantener esas comprobaciones en un solo lugar en lugar de dispersarse por los componentes.
Dicho esto, a Redux solo le preocupa cómo se actualiza el estado global, y si solo necesita realizar una solicitud AJAX desde algún componente, no tiene que escribir un creador de acciones o un reductor para ello a menos que lo encuentre conveniente.
En general, decir Redux (y Flux) es lo que podría considerar refactorizar su código cuando tiene muchos componentes complicados; No es con lo que deberías comenzar cada componente. Puede usar solo las partes que necesita (p. Ej., Solo las cosas síncronas), o incluso evitarlas por completo en algunos casos (p. Ej., Un panel plegable no tiene que almacenar su estado en una tienda). Solo úselo cuando entienda los beneficios específicos que le brinda en una situación particular, nunca "por si acaso" o porque es popular.
Véase también mi respuesta a "¿Cómo se envía una acción Redux con un tiempo de espera?"
Para abordar su ejemplo específico, es posible que desee utilizar Redux para esto si utiliza los beneficios que le ofrece Redux: tal vez, envíe una acción para actualizar el formulario de manera optimista y muestre la nueva lista de inmediato, y la combine con la lista recuperada cuando Está disponible para que la interacción parezca instantánea. Ese es el caso de uso para los creadores de acciones asíncronas. Si no está viendo este tipo de complejidad de UX, no estoy seguro de que Redux sea necesario en absoluto.
Tengo algunas solicitudes de ajax que no están manipulando directamente el estado de mis aplicaciones. En una aplicación de reacción / redux, ¿es necesario (o hay algún beneficio) enviar una acción para estas solicitudes de ajax en lugar de simplemente enviar una solicitud de ajax directamente en el componente?
Para simplificar mi escenario, esencialmente tengo una lista de objetos en mi estado de redux. Estoy utilizando un formulario para publicar un nuevo objeto en la base de datos, luego de una publicación exitosa estoy redirigiendo a la página de la lista donde se envía una solicitud GET y se recupera la lista y se actualiza el estado.
La llamada de AJAX para publicar un nuevo objeto no está manipulando directamente mi estado.
El equipo con el que estoy trabajando está realizando los pasos asincrónicos de redux completos de 3 pasos, por ejemplo: ''FETCH_REQUESTED''
, ''FETCH_SUCCESS''
, ''FETCH_FAIL''
junto con los respectivos reductores para todas las solicitudes de AJAX y es una gran molestia agregar más y los reductores. no parecen tener sentido
Trate de usar el siguiente enlace
https://github.com/sskyy/redux-task
Puede ayudarlo a administrar el estado de solicitud de AJAX sin esas acciones y reductores detallados.