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

javascript - react - ¿Cómo obtener algo del estado/tienda dentro de una función redux-saga?



redux-saga example (2)

¿Cómo accedo al estado redux dentro de una función saga?

Respuesta corta:

import { select } from ''redux-saga''; ... let data = yield select(stateSelectorFunction);


Como ya dice @markerikson, redux-saga expone una select() API select() muy útil para invocar un selector en el estado para obtener parte de ella disponible dentro de la saga.

Para su ejemplo, una implementación simple podría ser:

/* * Selector. The query depends by the state shape */ export const getProject = (state) => state.project // Saga export function* saveProjectTask() { while(true) { yield take(SAVE_PROJECT); let project = yield select(getProject); // <-- get the project yield call(fetch, ''/api/project'', { body: project, method: ''PUT'' }); yield put({type: SAVE_PROJECT_SUCCESS}); } }

Además del doc sugerido por @markerikson, hay un muy buen video tutorial de D. Abramov que explica cómo usar los selectors con Redux. Consulta también this interesante hilo en Twitter.


Para eso están las funciones de "selector". Se les pasa todo el árbol de estado, y devuelven una parte del estado. El código que llama al selector no necesita saber en qué estado se encontraban los datos, solo que se devolvieron. Consulte doc para ver algunos ejemplos.

Dentro de una saga, la API select() se puede usar para ejecutar un selector.