Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

305
Vistas
Obtener devoluciones de llamada de redux-saga

Estoy activando una función en saga con Dispatch. ¿Puede Saga enviarme información dentro del componente después de que haya hecho todo su trabajo? En realidad, explicaré lo que quiero hacer con un ejemplo simple, no se rían, por favor, estoy seguro de que esto no funcionará.

 dispatch({ type: 'triggerApiCallInSaga' }).then(res => doSomething(res.payload));

Quiero hacer cambios en el componente como resultado de la consulta que he hecho. De hecho, quiero mantener esto con redux, pero me preocupa que mi estado se expanda. También me parece una tontería verificar a través de redux para cerrar el modal.

En resumen quiero recibir señal de saga y verla en componente. ¿Puedo hacer un oyente para ello? ¿O la saga tiene un método para esto? Aunque busqué, no pude encontrar los resultados correctos. devolución de llamada de redux-sagas (también conocido como sagas y setState) Encontré una pregunta similar a mi pregunta, pero aquí encontré una respuesta negativa que no entendí.

Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La respuesta que vinculó es correcta, la forma esperada para que una saga se comunique con el componente es mediante la actualización de la tienda redux. Agregar promesas/devoluciones de llamada es un antipatrón, porque cada acción puede ser manejada por sagas 0-n; por supuesto, es posible que sepa que en su caso es solo una saga, pero el marco no garantiza eso de ninguna manera y puede conducir a algunos problemas inesperados más adelante.

Dicho esto, aunque sea un antipatrón no significa que no puedas hacerlo.

La forma más fácil es agregar una devolución de llamada a la acción, por ejemplo

 // component const callback = data => console.log(data) dispatch({type: MY_ACTION, callback}) // saga yield takeEvery(MY_ACTION, function*(action) { action.callback({foo: 'bar'}); })

Si prefiere promesas, eso es algo que no se puede hacer fácilmente solo con la biblioteca de saga, pero hay paquetes que pueden agregar esta funcionalidad como: https://github.com/adobe/redux-saga-promise

La solución ideal para este problema sería ejecutar una saga sobre un useReducer , de modo que en lugar de agregar un estado específico del componente a la tienda redux, solo trabajaría con un estado del componente. Hay algunos intentos que intentan hacer esto, pero desafortunadamente, a Reaction aún le falta alguna funcionalidad que nos permita hacer esto de manera confiable sin introducir otros problemas.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda