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

新手上路,请多包涵

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

简短回答:

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

原文由 Adam Tal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 272
2 个回答

正如@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 上的 这个 有趣的线程。

原文由 NickGnd 发布,翻译遵循 CC BY-SA 3.0 许可协议

这就是“选择器”功能的用途。你将整个状态树传递给它们,它们返回状态的一部分。调用选择器的代码不需要 知道 数据处于什么状态,只需要知道它已返回。有关一些示例,请参阅 http://redux.js.org/docs/recipes/ComputingDerivedData.html

在 saga 中, select() API 可用于执行选择器。

原文由 markerikson 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题