Saltar al contenido

Múltiples sagas redux

Solución:

Redux Saga utiliza el all función en la versión reciente (0.15.3) para combinar varias sagas en una saga raíz para la tienda Redux.

import { takeEvery, all } from 'redux-saga/effects';

...

function *watchAll() {
  yield all([
    takeEvery("FRIEND_FETCH_REQUESTED", fetchFriends),
    takeEvery("CREATE_USER_REQUESTED", createUser)
  ]);
}

export default watchAll;

En la tienda de Redux puedes usar la saga raíz para el middleware de la saga:

import { createStore, applyMiddleware } from 'redux';
import createSagaMiddleware from 'redux-saga';

import rootReducer from './reducers';
import rootSaga from './sagas';

const sagaMiddleware = createSagaMiddleware();
const store = createStore(
  rootReducer,
  applyMiddleware(sagaMiddleware)
);

sagaMiddleware.run(rootSaga)

Por supuesto, ese es el objetivo de las sagas.

Una aplicación típica tendrá varias sagas esperando en segundo plano, esperando una acción / acciones en particular (take efecto).

A continuación se muestra un ejemplo de cómo puede configurar varias sagas desde el número 276 de redux-saga:

./saga.js

function* rootSaga () {
    yield [
        fork(saga1), // saga1 can also yield [ fork(actionOne), fork(actionTwo) ]
        fork(saga2),
    ];
}

./main.js

import { createStore, applyMiddleware } from 'redux'
import createSagaMiddleware from 'redux-saga'

import rootReducer from './reducers'
import rootSaga from './sagas'


const sagaMiddleware = createSagaMiddleware()
const store = createStore(
  rootReducer,
  applyMiddleware(sagaMiddleware)
)
sagaMiddleware.run(rootSaga)

Esto ha cambiado un poco desde que se publicaron las últimas respuestas. La forma preferida de crear la saga raíz, como se documenta en https://redux-saga.js.org/docs/advanced/RootSaga.html, es usando spawn:

export default function* rootSaga() {
  yield spawn(saga1)
  yield spawn(saga2)
  yield spawn(saga3)
}

spawn es un efecto que desconectará la saga de su hijo de su padre, lo que le permitirá fallar sin bloquear a su padre. Esto simplemente significa que incluso si una saga fallara, el rootSaga y otras sagas no morirán. También hay una forma de recuperar sagas que fallan (más información sobre eso está disponible en el enlace mencionado anteriormente).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *