Javascript 在回调中使用sagaMiddleware.run是否是正常模式

Javascript 在回调中使用sagaMiddleware.run是否是正常模式,javascript,firebase,redux,redux-saga,Javascript,Firebase,Redux,Redux Saga,我正在使用firebase处理我的登录验证。我使用firebase.auth().onAuthStateChanged(callback)方法侦听auth更改,然后根据需要在回调中分派操作。为了让它与redux saga一起工作,我有以下设置。它可以工作,但我想知道在这样的帮助函数中使用sagaMiddleware.run()是否可以 LoginSaga.js const returnAuthData = (handleLogin) => { firebase.auth().onAut

我正在使用firebase处理我的登录验证。我使用
firebase.auth().onAuthStateChanged(callback)
方法侦听auth更改,然后根据需要在回调中分派操作。为了让它与redux saga一起工作,我有以下设置。它可以工作,但我想知道在这样的帮助函数中使用
sagaMiddleware.run()
是否可以

LoginSaga.js

const returnAuthData = (handleLogin) => {
  firebase.auth().onAuthStateChanged(authData => sagaMiddleware.run(handleLogin, authData))
}

function* handleLogin(authData) {
  const state = select()
  if (authData) {
    yield put(loginUser(authData))
  } else {
    if (state.auth && state.auth.currently !== ANONYMOUS) {
      yield put(logOutUser())
    }
  }
}

export function* listeningForAuth() {
  returnAuthData(handleLogin)
}
main.js

...    
sagaMiddleware.run(listeningForAuth)
...

为什么你不能在回调中分派一个动作呢?这很理想,但是在这种情况下分派从何而来呢?在
onAuthStateChanged
callbackSorry中,我不确定我是否得到了它。redux商店没有任何地方可以让我使用分派方法。为什么不呢?在顶部有一个组件
,该组件可以通过上下文访问存储,并在
组件将挂载
方法中调用您的
onAuthChanged
方法