我正在使用 firebase 在我的应用程序中处理身份验证。Firebase 有一个监听器,只要身份验证状态发生变化,它就会执行回调。我在firebase utils文件中有这个:
export default {
...
authChanged: (callback) =>{
return firebaseAuth.onAuthStateChanged(callback);
},
...
}
当用户登录/注销时,回调执行。我正在尝试在 redux-saga 中处理这个观察者,只要 firebase 告诉我状态发生变化,就会向我的 reducer 发送一个事件。我遇到的问题是我无法确定如何控制该观察者的动态返回值。现在我正在这样做:
export function* loginState(){
Firebaseutils.authChanged(function(user){
if(user){
yield put({type: 'LOGGED_IN', user: {user.email, user.uid}})
}else{
yield put({type: 'LOGGED_OUT'})
}
});
}
我已经确认 if/else 条件有效(只是在状态更改时登录到控制台),但如果我尝试使用 yield 会出现错误。这要么是一个错误,要么是我违反了我不清楚的规则。还有其他方法可以设置吗?从最佳实践的角度来看,这似乎确实需要由 redux-sagas 处理。