"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Kit de herramientas de Redux: React Thunk y React Saga. Aprenda de Vishal Tiwari.

Kit de herramientas de Redux: React Thunk y React Saga. Aprenda de Vishal Tiwari.

Publicado el 2024-11-09
Navegar:295

Redux toolkit: React Thunk and React Saga.Learn from Vishal Tiwari.

React Thunk y React Saga son bibliotecas de middleware para manejar efectos secundarios en aplicaciones React, especialmente para administrar operaciones asincrónicas como llamadas API. Ambos se usan comúnmente con Redux pero tienen propósitos y enfoques ligeramente diferentes.


Reaccionar gracias

1. Descripción general:

React Thunk es un middleware que le permite escribir creadores de acciones que devuelven funciones en lugar de objetos de acción. Esto es útil para manejar operaciones asincrónicas como solicitudes de API o lógica síncrona compleja (como el envío condicional de acciones). La función devuelta recibe despacho y getState como argumentos, lo que le permite enviar otras acciones o acceder al estado actual dentro de la función.

2. Conceptos clave:

  • Middleware: Thunk es un middleware que amplía la capacidad de la tienda para manejar funciones (es decir, procesadores).
  • Acciones asincrónicas: Con Thunk, puedes retrasar el envío de una acción o enviarla condicionalmente según un determinado estado o lógica.
  • Simple: Thunk es relativamente sencillo, lo que facilita su uso en la mayoría de los casos de uso.

3. Cómo funciona:

  • Normalmente, los creadores de acciones devuelven objetos simples de JavaScript (acciones).
  • Con Thunk, un creador de acciones puede devolver una función (el "thunk") que recibe despacho y getState. Dentro de esta función, puede realizar lógica asincrónica (por ejemplo, obtener datos de una API) y luego enviar la acción real.

4. Ejemplo:

Aquí tienes un ejemplo básico de cómo usarías redux-thunk en una aplicación React:

   // Action Creator with Thunk
   export const fetchUser = () => {
     return async (dispatch) => {
       dispatch({ type: 'FETCH_USER_REQUEST' });
       try {
         const response = await fetch('/api/user');
         const data = await response.json();
         dispatch({ type: 'FETCH_USER_SUCCESS', payload: data });
       } catch (error) {
         dispatch({ type: 'FETCH_USER_FAILURE', payload: error });
       }
     };
   };

5. Ventajas de Thunk:

  • Simplicidad: Thunk es fácil de entender e implementar.
  • Ocupa poco espacio: Es liviano y no requiere configuraciones complejas.
  • Control directo sobre el envío: Tienes más control sobre cuándo y cómo se envían las acciones.

6. Inconvenientes:

  • Difícil de escalar: Para flujos asincrónicos complejos, Thunk puede volverse complicado, con lógica anidada y muchas llamadas de despacho.
  • Menos estructura: Thunk no aplica una estructura particular para gestionar los efectos secundarios, lo que puede generar código inconsistente si no se maneja adecuadamente.

Reaccionar Saga

1. Descripción general:

React Saga es un middleware que te permite manejar los efectos secundarios de una manera más organizada usando funciones generadoras. En lugar de devolver funciones como Thunk, utiliza un sistema de "efectos" para gestionar operaciones asincrónicas y controlar el flujo de su lógica. Las sagas son procesos en segundo plano de larga duración que pueden escuchar las acciones enviadas y realizar efectos secundarios como llamadas API, obtención de datos y otras tareas.

2. Conceptos clave:

  • Funciones del generador: Las sagas se implementan utilizando funciones del generador de ES6 (función*), que le permiten escribir código asincrónico que parece sincrónico.
  • Observadores y trabajadores: Las sagas a menudo se dividen en sagas de "observadores" (que escuchan las acciones enviadas) y sagas de "trabajadores" (que manejan los efectos secundarios).
  • Tomar, poner, llamar: Redux-Saga proporciona creadores de efectos (tomar, poner, llamar, etc.) para controlar cuándo activar efectos secundarios, enviar acciones y llamar a API.

3. Cómo funciona:

  • Con Redux-Saga, defines sagas (tareas en segundo plano de larga duración) que son responsables de manejar los efectos secundarios.
  • Las sagas generalmente se escriben como funciones generadoras y producen efectos como call (para invocar funciones) y put (para enviar acciones).
  • Las sagas también pueden esperar acciones específicas con take o escuchar cualquier acción con takeEvery o takeLatest.

4. Ejemplo:

Aquí hay un ejemplo básico de cómo se puede utilizar redux-saga:

   import { call, put, takeLatest } from 'redux-saga/effects';

   // Worker saga: will be fired on FETCH_USER_REQUEST actions
   function* fetchUser(action) {
     try {
       const response = yield call(fetch, '/api/user');
       const data = yield response.json();
       yield put({ type: 'FETCH_USER_SUCCESS', payload: data });
     } catch (e) {
       yield put({ type: 'FETCH_USER_FAILURE', message: e.message });
     }
   }

   // Watcher saga: spawns a new fetchUser task on each FETCH_USER_REQUEST
   function* mySaga() {
     yield takeLatest('FETCH_USER_REQUEST', fetchUser);
   }

   export default mySaga;

5. Ventajas de Redux-Saga:

  • Mejor para efectos secundarios complejos: El enfoque basado en efectos de Saga es más escalable y adecuado para gestionar flujos asincrónicos complejos (por ejemplo, lidiar con reintentos, antirrebote o llamadas API en cascada).
  • Comprobable: Las sagas son fáciles de probar ya que se basan en funciones de generador.
  • Declarativo: El uso de efectos deja más claro qué efectos secundarios ocurrirán, haciendo que el flujo sea más predecible.
  • Cancelaciones y secuencias: Saga facilita cancelar tareas en curso o imponer secuencias de flujos de eventos (como esperar múltiples acciones).

6. Inconvenientes:

  • Curva de aprendizaje más pronunciada: El uso de las funciones del generador y el patrón general de la saga puede ser difícil de entender para los principiantes.
  • General: Para aplicaciones pequeñas, puede parecer excesivo en comparación con soluciones más simples como Thunk.
  • Detallado: Las sagas tienden a incluir más código repetitivo en comparación con Thunk.

Comparación: React Thunk vs. React Saga

Aspecto Reaccionar Thunk Reaccionar Saga
Concepto Devuelve funciones en creadores de acciones Utiliza funciones de generador para efectos secundarios
Curva de aprendizaje Más fácil de aprender y usar Curva de aprendizaje más alta debido a los generadores
Flujo asincrónico Maneja lógica asíncrona simple Mejor para flujos de trabajo asíncronos complejos
Estructura del código Menos estructura, puede resultar complicado en aplicaciones grandes Proporciona un enfoque claro y estructurado
Pruebas Las pruebas pueden ser más desafiantes Más fácil de probar gracias a los generadores
Casos de uso Lógica asíncrona simple, solicitudes de API Flujos complejos (p. ej., secuencias, reintentos)
Actuación Ligero Más potente, pero un poco más elevado

¿Cuándo usar cuál?

  • Usa React Thunk si:

    • Su aplicación tiene necesidades asincrónicas relativamente simples, como solicitudes de API básicas y envío basado en condiciones.
    • Quieres una solución ligera, fácil de entender y sin muchos textos repetitivos.
  • Usa React Saga si:

    • Necesitas gestionar flujos asincrónicos más complejos, como reintentos, secuenciación de acciones, condiciones de carrera o múltiples tareas que dependen unas de otras.
    • Prefieres el enfoque declarativo y deseas un mejor control de los efectos secundarios.
    • Tu aplicación requiere una mejor capacidad de prueba y mantenimiento del código a largo plazo.
Declaración de liberación Este artículo se reproduce en: https://dev.to/vishal_tiwari_114f21d14e5/redux-toolkit-react-thunk-and-react-sagalearn-from-vishal-tiwari-58b?1 Si hay alguna infracción, comuníquese con Study_golang@163 .com para eliminarlo
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3