tutorial rootsaga react example español javascript reactjs redux saga redux-saga

javascript - rootsaga - redux saga tutorial



getState en la saga redux? (2)

El efecto de selección no nos ayuda si tenemos funciones de devolución de llamada, cuando Saga no maneja el flujo de código. En este caso, simplemente pase dispatch y getState a la saga raíz:

store.runSaga(rootSaga, store.dispatch, store.getState)

Y los parámetros de paso a las sagas infantiles

export default function* root(dispatch, getState) { yield all([ fork(loginFlow, dispatch, getState), ]) }

Y luego en los métodos de vigilancia

export default function* watchSomething(dispatch, getState) ...

Tengo una tienda con una lista de artículos. Cuando mi aplicación se carga por primera vez, necesito deserializar los elementos, como crear algunos objetos en memoria basados ​​en los elementos. Los artículos se almacenan en mi tienda redux y son manejados por itemsReducer .

Estoy tratando de usar redux-saga para manejar la deserialización, como efecto secundario. En la primera carga de la página, despacho una acción:

dispatch( deserializeItems() );

Mi saga está configurada simplemente:

function* deserialize( action ) { // How to getState here?? yield put({ type: ''DESERISLIZE_COMPLETE'' }); } function* mySaga() { yield* takeEvery( ''DESERIALIZE'', deserialize ); }

En mi saga deserialize, donde quiero manejar el efecto secundario de crear versiones en memoria de mis artículos, necesito leer los datos existentes de la tienda. No estoy seguro de cómo hacer eso aquí, o si ese es un patrón, incluso debería intentarlo con redux-saga.


puedes usar el efecto select

import {select, ...} from ''redux-saga/effects'' function* deserialize( action ) { const state = yield select(); .... yield put({ type: ''DESERIALIZE_COMPLETE'' }); }

también puedes usarlo con selectores

const getItems = state => state.items; function* deserialize( action ) { const items = yield select(getItems); .... yield put({ type: ''DESERIALIZE_COMPLETE'' }); }