在回调中使用sagaMiddleware.run是一个好的模式

时间:2017-02-25 09:03:58

标签: javascript firebase redux redux-saga

我正在使用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)
...

0 个答案:

没有答案