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

标签 javascript reactjs redux react-redux redux-saga

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

简答:

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

最佳答案

正如@markerikson 所说,redux-saga 公开了一个非常有用的 API select()在状态上调用 selector 以获取它的某些部分在 saga 中可用。

对于您的示例,一个简单的实现可以是:

/*
 * 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});
  }
}

除了建议doc @markerikson,有一个非常好的video tutorial作者 D. Abramov,解释了如何在 Redux 中使用 selectors。也检查 this Twitter 上有趣的线程。

关于javascript - 如何从 redux-saga 函数中的状态/存储中获取某些东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37772877/

相关文章:

javascript - 在 Javascript 中创建全局变量时是否需要指定对象类型?

javascript - 如何对键为数字字符串的数组进行排序

reactjs - 如何在浏览器 Babel 中包含 webpack?

javascript - 当元素在 DOM 中时,不变违规 : Target container is not a DOM element,

javascript - 由于飞行前获取答案为空?

javascript - 使用 lodash 并尝试使用多个对象更新和对象。 (编辑项目)

javascript - Ember.js 中的类自动加载器?

javascript - 如何从 Duktape 中运行的 JavaScript 代码读取文件?

javascript - 如何制作 Electron 菜单在当前窗口进行通用搜索?

reactjs - React-Redux 应用程序中的不变性 - Immutablejs 和 Typescript 冲突