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