2016-09-18 63 views
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条件语句工作(只是登录时状态更改为控制台),但我得到一个错误,如果我尝试使用收益。这是一个错误,或者我违反了我不清楚的规则。任何其他方式来设置?从最佳实践角度来看,这似乎真的需要由redux-sagas处理。

+0

你想出了一个解决方案? – Lee

回答

0

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

您可以通过正常派遣来调度行动。