2

我正在使用 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 处理。

4

1 回答 1

0

您只能yield在生成器函数内部使用。与变量和函数不同,yield它在嵌套函数中不可用,而您的回调函数就是。

您可以通过正常调度来调度操作。

于 2016-09-18T06:03:55.677 回答