首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redux-Saga takeEvery不呼叫saga

Redux-Saga takeEvery不呼叫saga
EN

Stack Overflow用户
提问于 2017-07-06 10:45:19
回答 1查看 2.7K关注 0票数 3

好的,从https://redux-saga.js.org/docs/introduction/BeginnerTutorial.html的Hello教程开始,我正在尝试构建一个非常简单的获取调用.只是我的生成器功能永远不会被执行。

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

代码语言:javascript
复制
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中实现了样板

代码语言:javascript
复制
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);

在浏览器控制台中,我看到一个“监视”,但是当我发出一个动作时

代码语言:javascript
复制
{
type: 'FETCH_REQUESTED'
}

通过Redux的devtools,我希望调试器停止我的代码并逐步执行fetchData函数.但什么都没发生。

我肯定我错过了一些很简单的东西-你能帮我吗?

编辑:

结果,如果我把devTools增强器移到compose的末尾,一切都很好。

代码语言:javascript
复制
const enhancers = 
  compose(
    applyMiddleware(sagaMiddleware),
    window.devToolsExtension ? window.devToolsExtension() : f => f
  )

现在我知道compose的最终签名取决于提交给它的最后一个函数,但这对我来说还有点不清楚……有人能澄清这是怎么回事吗?

EN

回答 1

Stack Overflow用户

发布于 2017-07-06 14:51:55

尝试以这种方式创建rootSaga

代码语言:javascript
复制
export default function * root () {
  yield [
    fetchDataWatcher()
  ]
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44946758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档