相关疑难解决方法(0)

如何从redux-saga函数中的状态/商店中获取内容?

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

我的问题

我有一个由以下部分组成的应用程序:

import { select } from 'redux-saga';
...
let data = yield select(stateSelectorFunction);
Run Code Online (Sandbox Code Playgroud)

每个部分都是一个不同的组件,它有自己的减速器,传奇,动作和状态.

工具栏有一个保存按钮,可以调度"SAVE_PROJECT"动作类型.问题是我不希望工具栏知道项目(它有更多的职责,我只是希望它发送类型的动作).

我有一个项目相关的传奇,它听取了"SAVE_PROJECT":

import { select } from 'redux-saga';
...
let data = yield select(stateSelectorFunction);
Run Code Online (Sandbox Code Playgroud)

我无法从传奇中的redux状态获得该项目.

我不认为我可以在当前项目reducer中听取"SAVE_PROJECT"事件,然后在reducer内部获取项目并向项目发送不同的操作.

我真的不希望我的工具栏知道整个状态树,并为每个动作发送与动作相关的任何内容.

我怎样才能将状态传递给传奇?还是只有国家的相关部分?

javascript reactjs redux redux-saga react-redux

95
推荐指数
2
解决办法
4万
查看次数

redux中的选择器是什么?

我想按照这个代码redux-saga

export const getUser = (state, login) => state.entities.users[login]
export const getRepo = (state, fullName) => state.entities.repos[fullName]
Run Code Online (Sandbox Code Playgroud)

然后将其像传奇使用:

import { getUser } from '../reducers/selectors'

// load user unless it is cached
function* loadUser(login, requiredFields) {
  const user = yield select(getUser, login)
  if (!user || requiredFields.some(key => !user.hasOwnProperty(key))) {
    yield call(fetchUser, login)
  }
}
Run Code Online (Sandbox Code Playgroud)

这种getUser减速器(甚至是减速器)与我通常期望的减速器看起来非常不同.

任何人都可以解释选择器是什么,getUser减速器是如何以及它如何适应redux-saga?

reactjs redux redux-saga

43
推荐指数
2
解决办法
1万
查看次数

标签 统计

reactjs ×2

redux ×2

redux-saga ×2

javascript ×1

react-redux ×1