我正在开发基于create-react-app的应用程序。我需要将redux-saga添加到堆栈中并且它不起作用。
我在商店中添加了sagaMiddleware:
import createSagaMiddleware from 'redux-saga';
import sagas from './sagas';
const sagaMiddleware = createSagaMiddleware();
const middlewares = [sagaMiddleware, createDebounce(), thunk, exponentialRetry, routerMiddleware(history)];
const store = createStore(reducer, composeEnhancers(applyMiddleware(...middlewares)));
store.runSaga = sagaMiddleware.run(sagas);
我有一个动作,会在componentDidMount
上发送。我可以看到它是在reducer中发送的,它也会监听这个动作。
我有一个传奇文件:
import { takeLatest } from 'redux-saga/effects';
import { FETCH_TASK } from './types';
export function* fetchTaskById(id) {
console.log('id', id);
}
export default function*() {
yield takeLatest(FETCH_TASK, fetchTaskById);
}
我有一个文件,它在一个rootSaga中收集来自不同文件的所有传闻并在商店中导入:
import { fork, all } from 'redux-saga/effects';
import TaskFormSaga from './containers/task-form/sagas';
const sagas = [...TaskFormSaga];
export default function* rootSaga() {
yield all(sagas.map(fork));
}
从代码角度看,一切看起来都很好,但fetchTaskById
传奇从未被调用过。此外,如果我在saga的导出默认功能中添加console.log,它永远不会写在控制台上。
我很感激提示可能出现的问题。