首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从状态/商店中得到一些东西,在一个redux-saga函数中?

如何从状态/商店中得到一些东西,在一个redux-saga函数中?
EN

Stack Overflow用户
提问于 2016-06-12 09:53:13
回答 3查看 80.2K关注 0票数 159

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

简短回答:

代码语言:javascript
运行
复制
import { select } from 'redux-saga/effects';
...
let data = yield select(stateSelectorFunction);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-12 22:00:15

正如@markerikson已经说过的那样,redux-saga公开了一个非常有用的API select()来调用状态中的selector,以便在传奇中获得它的某些部分。

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

代码语言:javascript
运行
复制
/*
 * 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还提供了一个非常好的视频教程,它解释了如何在Redux中使用selectors。还可以在Twitter上查看有趣的帖子。

票数 290
EN

Stack Overflow用户

发布于 2016-06-12 18:28:59

这就是“选择器”函数的用途。你把整个州树传递给他们,他们就会返回一些州的一部分。调用选择器的代码不需要知道数据的状态在哪里,只需要知道它是返回的。有关一些示例,请参见http://redux.js.org/docs/recipes/ComputingDerivedData.html

在saga中,可以使用API接口来执行选择器。

票数 38
EN

Stack Overflow用户

发布于 2019-10-17 12:34:27

我使用一个eventChannel来分派生成器函数中回调的动作。

代码语言:javascript
运行
复制
import {eventChannel} from 'redux-saga';
import {call, take} from 'redux-saga/effects';

function createEventChannel(setEmitter) {
    return eventChannel(emitter => {
        setEmitter(emitter)
        return () => {

        }
      }
    )
}

function* YourSaga(){
    let emitter;
    const internalEvents = yield call(createEventChannel, em => emitter = em)

    const scopedCallback = () => {
        emitter({type, payload})
    }

    while(true){
        const action = yield take(internalEvents)
        yield put(action)
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37772877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档