首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >redux-saga -从node_modules导入saga并将其与其他saga组合

redux-saga -从node_modules导入saga并将其与其他saga组合
EN

Stack Overflow用户
提问于 2018-07-29 22:12:49
回答 1查看 1.6K关注 0票数 3

有没有办法将node_modules中的传奇与我为应用程序编写的其他传奇结合起来?如果sagaMiddleware.run()可以接受sagas数组,这将是有意义的,但id不能

我在node_modules中有一个npm模块,里面有这个故事。

代码语言:javascript
复制
// node_modules/module/rootSaga.js
import { takeLatest } from 'redux-saga/effects'
import { createUserSaga } from './sagas/usersSagas'

export default function* usersModuleMernSagas() {
    yield takeLatest('CREATE_USER_REQUEST', createUserSaga)
}

我的店铺是这样的

代码语言:javascript
复制
// store.js
import { applyMiddleware, createStore } from 'redux'
import createSagaMiddleware from 'redux-saga'
import { routerMiddleware } from 'react-router-redux'
import history from 'history-module-mern'

import rootSaga from 'module/rootSaga'  // this is taht import from node_modules
import rootReducer from './rootReducer'
const sagaMiddleware = createSagaMiddleware()
const historyMiddleware = routerMiddleware(history)
const middleware = applyMiddleware(sagaMiddleware, historyMiddleware)

export const store = createStore(
    rootReducer,
    window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__(),
    middleware
)

sagaMiddleware.run(rootSaga) //this can run only one saga
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-04 06:47:17

为了将多个sagas传递给sagaMiddleware.run(),您需要创建一个单独的生成器,您将在其中生成所有sagas。

下面你可以看到我的例子,其中有两个传奇:

代码语言:javascript
复制
// sagas.js

import { all, fork } from "redux-saga/effects";
import appSagas from "./App";
import authSagas from "./Auth";

export default function* () {
  yield all([
    fork(appSagas),
    fork(authSagas)
  ]);
}

然后,我将生成器函数作为sagas导入,并将其作为一个参数传递给sagaMiddleware.run(),如下所示:

代码语言:javascript
复制
// index.js

import sagas from "./sagas";

sagaMiddleware.run(sagas);
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51581181

复制
相关文章

相似问题

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