前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一步一步教你把 Redux Saga 添加到 React&Redux 程序中

一步一步教你把 Redux Saga 添加到 React&Redux 程序中

作者头像
winty
发布2020-08-16 23:46:18
9860
发布2020-08-16 23:46:18
举报
文章被收录于专栏:前端Q前端Q

时间紧迫?先克隆 GitHub 仓库代码吧!

代码语言:javascript
复制
git clone --branch redux-saga https://github.com/rajjeet/react-quick-start redux-saga-quick-start
cd redux-saga-quick-start
npm install
npm start
第1步:安装 redux-saga
代码语言:javascript
复制
npm install redux-saga
第2步:导入库

/src/configure-store.js

代码语言:javascript
复制
import { createStore, applyMiddleware } from 'redux';
import createSagaMiddleware from 'redux-saga';
import "regenerator-runtime/runtime";
...

applyMiddleware 是一个辅助函数,为 reduxdispatch 函数添加了功能。

默认的 redux-saga 导出(在代码中为 createSagaMiddleware)是创建中间件实例的工厂。

通过导入 regenerator-runtime/runtime 允许 Babel 进行异步动作的转译,而不会出现任何问题。如果忽略此行,则你的应用会失败,并显示以下错误消息:Uncaught ReferenceError:regeneratorRuntime is not defined

第3步:创建根 saga

/src/configure-store.js

代码语言:javascript
复制
function* exampleSaga() {
  console.log("Example saga reached");
}

Saga 只是生成器函数。与正常函数不同,生成器可以用 yield 关键字暂停对异步语句的执行。

与根 reducer( createStore 的第一个参数)一样,此 saga 充当一棵树的根,其中每个树节点都将是另一个 saga。这使我们可以将 saga 和 reducers 并置在使用它们的组件附近。这也使它们易于管理,因为它们仅包含与附近文件相关的代码。

在例子中,exampleSaga只是执行一次并终止的普通函数。我们将在以后的教程中探讨生成器的用法。

第5步:创建 Saga 中间件实例

/src/configure-store.js

代码语言:javascript
复制
const sagaMiddleware = createSagaMiddleware();

执行我们代码中的 redux-saga 默认导入来获取 saga 中间件的实例。

第5步:将 saga 中间件应用到 redux

/src/configure-store.js

代码语言:javascript
复制
export const store = createStore(countReducer, applyMiddleware(sagaMiddleware));

applyMiddleware(sagaMiddleware) 返回 store enhancer。通过使用工具函数 applyMiddleware,我们可以组合多个中间件并返回一个 store enhancer。 createStore 仅接受单个 store enhancer,因此需要 applyMiddleware。我们将为多个中间件使用一个中间件数组。

第6步:运行 saga

/src/configure-store.js

代码语言:javascript
复制
sagaMiddleware.run(exampleSaga);

run() 用来接受生成器并在后台运行该进程。通过该过程,我们可以并行创建多个过程并执行许多与 Redux 相关的函数。另外要注意,它必须在应用 saga 中间件之后运行。

Redux-Saga 配置 Store

这是整合 redux-saga 之后我们最终 store 的配置。

/src/configure-store.js

代码语言:javascript
复制
import { createStore, applyMiddleware } from 'redux';
import { countReducer } from './counter/reducer';
import createSagaMiddleware from 'redux-saga';
import "regenerator-runtime/runtime";

function* exampleSaga() {
  console.log("Example saga reached");
}

const sagaMiddleware = createSagaMiddleware();

export const store = createStore(countReducer, applyMiddleware(sagaMiddleware));

sagaMiddleware.run(exampleSaga);

这就是在程序中使用 redux-saga 的最低要求, 非常简单。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端Q 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第1步:安装 redux-saga
  • 第2步:导入库
  • 第3步:创建根 saga
  • 第5步:创建 Saga 中间件实例
  • 第5步:将 saga 中间件应用到 redux
  • 第6步:运行 saga
  • Redux-Saga 配置 Store
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档