Javascript 重演传奇每一个不叫传奇的人

Javascript 重演传奇每一个不叫传奇的人,javascript,redux,redux-saga,Javascript,Redux,Redux Saga,好的,从Hello World教程开始,我正在尝试构建一个非常简单的fetch调用。。。只是我的生成器函数从未执行过 相关代码如下所示,目前仅用于测试目的的控制台日志记录: export function* fetchData() { debugger; console.log('Fetching data'); } export function* fetchDataWatcher() { console.log("watching"); yield takeEvery('F

好的,从Hello World教程开始,我正在尝试构建一个非常简单的fetch调用。。。只是我的生成器函数从未执行过

相关代码如下所示,目前仅用于测试目的的控制台日志记录:

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
的结果签名取决于提交给它的最后一个函数,但我还是有点不清楚。。。有人能澄清发生了什么吗?

试着用这种方式创建你的
rootSaga

export default function * root () {
  yield [
    fetchDataWatcher()
  ]
}