如何在saga函数中访问redux状态?
简短答案:
import { select } from 'redux-saga/effects';
...
let data = yield select(stateSelectorFunction);
正如@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上也请检查这个有趣的线程。
我完成了一个使用create-react-app(CSR)创建的React应用程序的编码,但我现在正在使用Next.js框架重写整个应用程序,以获得更好的SEO性能。 在重写它时,我遇到了一些困难,想知道如何正确地处理redux和redux-saga来执行获取和存储数据的过程。在本项目中使用Next.js的主要原因是利用getInitialProps方法,在第一次页面加载发生之前在服务器端获取数据
问题内容: 我正在使用Redux进行状态管理。 如何将商店重置为初始状态? 例如,假设我有两个用户帐户(和)。 想象以下事件序列: 用户登录到该应用程序并执行某些操作,因此我们在存储中缓存了一些数据。 用户注销。 用户无需刷新浏览器即可登录应用程序。 此时,缓存的数据将与关联,我想对其进行清理。 当第一个用户注销时,如何将Redux存储重置为其初始状态? 问题答案: 一种方法是在应用程序中编写根减
问题内容: 我只是做一个简单的应用程序来学习与redux异步。我已经使所有工作正常进行,现在我只想在网页上显示实际状态。现在,我实际上如何在render方法中访问商店的状态? 这是我的代码(所有内容都在一页中,因为我只是在学习): 因此,在状态的render方法中,我想列出商店中的所有内容。 谢谢 问题答案: 您应该创建单独的组件,该组件将侦听状态更改并在每次状态更改时进行更新:
我只是做了一个简单的应用程序学习异步与Redux。我已经使所有的工作,现在我只想显示的实际状态到网页上。现在,我如何在render方法中实际访问存储的状态? 这里是我的代码(所有内容都在一个页面中,因为我只是在学习): 谢谢
下面是一个简单的场景: 用户单击“Create order”:将创建一个订单(首先保持其状态=NEW) 用户完成订单填写后,单击SAVE-->state is now Submited 当另一个检查订单并验证它时,必须进行一个过程。只有在调用了其他一些服务并给予许可时,才会验证该订单。 整个工作流程是: null null 谢谢
问题内容: 在进行Ajax调用的redux-form 函数中,Ajax中需要Redux状态的某些属性(例如,用户ID)。 这将是很容易的,如果我想定义形式的成分,只要调用:在任何我需要传递,并从阅读中我的。 但是,像一个出色的React-Redux开发人员一样,我编写了 单独的视图组件和容器 ,因此视图组件可以很简单,几乎没有行为。因此,我想 在我的container中定义handleSubmit