redux-saga - 从 node_modules 导入传奇并将其与其他传奇合并
redux-saga - import and combine sagas from node_modules with other sagas
有什么方法可以将 node_modules 中的 sagas 与我为我的应用程序编写的其他 sagas 结合起来吗?如果 sagaMiddleware.run()
接受 sagas 数组,但 id 不接受
我在 node_modules 中有 npm 模块,它有这个传奇。
// 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)
}
我的店铺是这样的
// 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
为了将多个 sagas 传递给 sagaMiddleware.run()
,您需要创建一个单独的生成器,您将在其中生成所有 sagas。
下面你可以看到我的例子有 2 个传奇:
// 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()
,如下所示:
// index.js
import sagas from "./sagas";
sagaMiddleware.run(sagas);
有什么方法可以将 node_modules 中的 sagas 与我为我的应用程序编写的其他 sagas 结合起来吗?如果 sagaMiddleware.run()
接受 sagas 数组,但 id 不接受
我在 node_modules 中有 npm 模块,它有这个传奇。
// 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)
}
我的店铺是这样的
// 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
为了将多个 sagas 传递给 sagaMiddleware.run()
,您需要创建一个单独的生成器,您将在其中生成所有 sagas。
下面你可以看到我的例子有 2 个传奇:
// 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()
,如下所示:
// index.js
import sagas from "./sagas";
sagaMiddleware.run(sagas);