好的,所以,在https://redux-saga.js.org/docs/introduction/BeginnerTutorial.html的Hello World教程中,我正在尝试构建一个非常简单的提取调用...只是我的生成器函数永远不会被执行。
相关代码如下所示,现在只是用于测试目的的控制台日志记录:
export function* fetchData() {
debugger;
console.log('Fetching data');
}
export function* fetchDataWatcher() {
console.log("watching");
yield takeEvery('FETCH_REQUESTED', fetchData);
}
// single entry point to start all Sagas at once
export default function* rootSaga() {
yield all([
fetchDataWatcher()
]);
}
当然,我在index.js
:
import rootSaga from './sagas';
...
const sagaMiddleware = createSagaMiddleware();
...
const enhancers =
compose(
window.devToolsExtension ? window.devToolsExtension() : f => f,
applyMiddleware(sagaMiddleware)
);
const store = createStore(
combineReducers({
...
}),
defaultState,
enhancers
);
sagaMiddleware.run(rootSaga);
在浏览器控制台中,我看到一个人正在观看',但是当我发出一个动作时
{
type: 'FETCH_REQUESTED'
}
通过Redux的开发工具,我希望调试器停止我的代码并引导我完成fetchData
功能......但没有任何反应。
我确定我在这里错过了一些非常简单的东西 - 你能帮帮我吗?
修改
原来,如果我将devTools增强器移到compose
的末尾,一切正常。
const enhancers =
compose(
applyMiddleware(sagaMiddleware),
window.devToolsExtension ? window.devToolsExtension() : f => f
)
现在我知道compose
的结果签名取决于提交给它的最后一个函数,对我来说有点不清楚......有人可以澄清发生了什么吗?
答案 0 :(得分:2)
尝试以这种方式创建rootSaga
export default function * root () {
yield [
fetchDataWatcher()
]
}