如何在saga函数中访问redux状态?
简短答案:
import { select } from 'redux-saga/effects'; ... let data = yield select(stateSelectorFunction);
正如@markerikson已经说过的那样,它redux-saga公开了一个非常有用的API select()来调用selector状态,以便在传奇中获取部分状态。
redux-saga
select()
selector
对于您的示例,一个简单的实现可以是:
/* * 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}); } }
除了@markerikson 建议的文档之外,D。Abramov还提供了一个非常好的视频教程,其中介绍了如何selectors与Redux 一起使用。在Twitter上也请检查这个有趣的线程。
selectors