小编典典

redux-saga函数如何从状态/存储中获取东西?

reactjs

如何在saga函数中访问redux状态?

简短答案:

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

阅读 557

收藏
2020-07-22

共1个答案

小编典典

正如@markerikson已经说过的那样,它redux-saga公开了一个非常有用的API 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上也请检查这个有趣的线程。

2020-07-22