Javascript 忽略redux Saga中的Saga,仅使用减速器

Javascript 忽略redux Saga中的Saga,仅使用减速器,javascript,reactjs,redux,redux-saga,saga,Javascript,Reactjs,Redux,Redux Saga,Saga,这里有一个关于redux传奇的问题。我正在调用toggleSidebar()打开/关闭侧边栏。然而,这样做是可行的,这个传奇故事被忽略了。我使用console.log在我的reducer和saga中登录到控制台,但只有reducer登录到控制台 侧边栏打开/关闭,但是为什么这个传奇被忽略了呢 /sagas/templateSaga.js-不登录到控制台 /reducers/templateReducer.js-记录到控制台 /actions/index.js /reducers/index.js

这里有一个关于redux传奇的问题。我正在调用
toggleSidebar()
打开/关闭侧边栏。然而,这样做是可行的,这个传奇故事被忽略了。我使用
console.log在我的
reducer
saga
中登录到控制台,但只有
reducer
登录到控制台

侧边栏打开/关闭,但是为什么这个传奇被忽略了呢

/sagas/templateSaga.js-不登录到控制台

/reducers/templateReducer.js-记录到控制台

/actions/index.js

/reducers/index.js(rootReducer)

/sagas/index.js(rootSaga)

我的存储配置如下:

import createSagaMiddleware                      from 'redux-saga'
import rootReducer     from '../modules/reducers'
import rootSaga from '../modules/sagas'

const sagaMiddleware    = createSagaMiddleware(rootSaga);

const middleware = [
  sagaMiddleware,
  routerMiddleware(history)
]

export const store = createStore(
  rootReducer,
  applyMiddleware(...middleware)
)
sagaMiddleware.run(rootSaga)
最后,在我的应用程序中,我使用:

const mapStateToProps = state => ({
  template: state.templateReducer
})
const mapDispatchToProps = dispatch =>
    bindActionCreators({ toggleSidebar }, dispatch)


export default connect(mapStateToProps, mapDispatchToProps)(App);

错误可能出现在
/sagas/index.js
(rootSaga)中 尝试将
…templateSaga
更改为
fork(templateSaga)
如下所示:

import { fork } from 'redux-saga/effects'
import { templateSaga } from './templateSaga'

export default function* rootSaga() {
  yield all([
    fork(templateSaga)
  ])
}
并将导出默认函数*templateSaga
更改为

export function* templateSaga() {
  yield takeLatest("TOGGLE_SIDEBAR", toggleSidebar);
}

另外,在
/sagas/templateSaga.js
中有一个循环,您可以在其中使用
'TOGGLE_SIDEBAR'
并立即在各个方面分派相同的类型。只是注意到了这个循环,很尴尬。我想这就是redux传奇的流程。我只想发送操作并更改状态。我是否必须为此创建另一个actiontype,或者是否有其他方法?因为我在我的rootSaga中导入了templateSaga(),它正在侦听操作。我应该在templateSaga()函数中立即分派它吗?这是一篇非常好的文章,如果您想更改状态,应该在reducer中执行。这完全取决于你想如何构造应用程序,但基本上在你的组件中调用
toggleSidebar
操作就足以触发reducer。复杂的异步通信需要Saga
import templateSaga from './templateSaga'

export default function* rootSaga() {
  yield all([
    ...templateSaga
  ])
}
import createSagaMiddleware                      from 'redux-saga'
import rootReducer     from '../modules/reducers'
import rootSaga from '../modules/sagas'

const sagaMiddleware    = createSagaMiddleware(rootSaga);

const middleware = [
  sagaMiddleware,
  routerMiddleware(history)
]

export const store = createStore(
  rootReducer,
  applyMiddleware(...middleware)
)
sagaMiddleware.run(rootSaga)
const mapStateToProps = state => ({
  template: state.templateReducer
})
const mapDispatchToProps = dispatch =>
    bindActionCreators({ toggleSidebar }, dispatch)


export default connect(mapStateToProps, mapDispatchToProps)(App);
import { fork } from 'redux-saga/effects'
import { templateSaga } from './templateSaga'

export default function* rootSaga() {
  yield all([
    fork(templateSaga)
  ])
}
export function* templateSaga() {
  yield takeLatest("TOGGLE_SIDEBAR", toggleSidebar);
}