1
好吧,所以从Hello World教程https://redux-saga.js.org/docs/introduction/BeginnerTutorial.html工作我的方式,我试图建立一个非常简单的fetch调用......只是我的生成器函数永远得不到执行。Redux-Saga takeEvery不叫传奇
相关的代码如下所示,现在只是控制台日志用于测试目的:
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的devtools,我希望调试器停止我的代码,并通过fetchData
函数指引我...但没有任何反应。
我敢肯定我错过了一些非常简单的东西 - 你能帮我吗?
编辑:
事实证明,如果我移动devTools增强剂的compose
结束,一切工作正常。
const enhancers =
compose(
applyMiddleware(sagaMiddleware),
window.devToolsExtension ? window.devToolsExtension() : f => f
)
现在我知道,造成的compose
签名依赖于提交给它的最后一个函数,这仍然是有些不清楚,我...有人可以澄清这是怎么回事?