Redux 状态不会在 Firebase 身份验证中更新 onAuthStateChanged 回调



我在firebase auth onauthstatechange回调中使用redux状态,像这样

...
const authUser  = useSelector(state => state.authUser)
console.log(authUser.status)
useEffect(() => {
const unsubscribe = onAuthStateChanged(auth, () => {
console.log(authUser.status)
if (authUser.status === 'loading') {
dispatch(updateStatus('loaded'))
}
return () => unsubscribe()
}, []);
...

首先记录

加载

加载

然后在我签名后,认证状态改变了,它记录了

加载

加载

status的初始状态为loading。每次auth状态改变时,它都会调用回调函数。回调函数中的status值始终是loading,即使它在store中的值已经更改为loaded。为什么它在回调中的值没有改变?

看完Dan的解释后,我知道state和props在闭包中永远不会改变。要实现我想要的逻辑,只需重写createSlice

中的更新逻辑
...
updateStatus: (state, action) => {
if (state.auth.status === 'loading') {
state.auth.status = 'loaded'
}
}
...

相关内容

  • 没有找到相关文章

最新更新