redux传奇和firebase-Can';t以干净的方式注销用户
作为前言,让我提一下,在今天之前,我从未使用过redux saga或Firebase。我目前正在尝试这两种技术 我可能只是错过了一个小概念,但我似乎无法在我的应用程序上注销。我想我应该使用redux传奇和firebase-Can';t以干净的方式注销用户,firebase,firebase-authentication,redux-saga,Firebase,Firebase Authentication,Redux Saga,作为前言,让我提一下,在今天之前,我从未使用过redux saga或Firebase。我目前正在尝试这两种技术 我可能只是错过了一个小概念,但我似乎无法在我的应用程序上注销。我想我应该使用call()来管理一个传奇故事中的副作用,但没有什么能起到作用 这是一个值得商榷的传奇故事: export function* deauthenticateUser() { yield takeLatest(DEAUTHENTICATE_REQUEST, function* () { try {
call()
来管理一个传奇故事中的副作用,但没有什么能起到作用
这是一个值得商榷的传奇故事:
export function* deauthenticateUser() {
yield takeLatest(DEAUTHENTICATE_REQUEST, function* () {
try {
yield call(firebase.auth().signOut)
yield put({ type: DEAUTHENTICATE })
}
catch (error) {
yield put({
type: DEAUTHENTICATE_FAILURE,
payload: error,
error: true,
})
}
})
}
我确认调用firebase.auth().signout()
直接起作用,只有在使用call()
时,我才会得到错误操作。请注意,当发送错误时,也没有有效负载
,显然,firebase.auth().signout()
返回一个承诺,内容中没有任何内容。我开始怀疑这是否不是问题所在,也许redux saga
不喜欢在使用call()
时没有结果
如何处理身份验证,尤其是使用Firebase和redux saga注销?从NULL SWEΔT的评论中,我不得不调用
产生调用([Firebase.auth(),Firebase.auth().signOut])
这是因为JS的上下文以及它是如何工作的。通过阅读和(阅读
调用([context,fn],…args)的文档)了解更多详细信息。您可以尝试生成调用([firebase.auth(),firebase.auth().signOut])
?它成功了。现在。。。我很想知道为什么。yield call(firebase.auth().signOut)
不够吗?Tbh,我不知道。我以前遇到过这个问题,这就解决了它。这是因为函数上下文才有意义。没有完全意识到call()
做了什么。非常感谢。