设置变量返回回调监听器

Set variable to return of callback listener

本文关键字:监听器 回调 返回 变量 设置      更新时间:2023-09-26

我在我的应用程序中使用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。这要么是一个bug,要么是我违反了我不清楚的规则。还有别的办法吗?从最佳实践的角度来看,这似乎确实需要由redux-saga来处理。

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

你可以用普通的调度来调度动作。