簡體   English   中英

Firebase Auth 用戶在每次頁面刷新時注銷 - 反應

[英]Firebase Auth user is logged out on every page refresh - React

每次刷新頁面時,用戶都會在身份驗證后返回登錄屏幕。 我正在使用 onAuthStateChanged 偵聽器,但是,在刷新頁面后,它就像沒有經過身份驗證的用戶一樣開始。

  const dispatch = useDispatch();
  const currentUser = useSelector((state) => state.user.value);
  useEffect(() => {
    auth.onAuthStateChanged((user) => {
      if (user) {
        dispatch(setCurrentUser({ email: user.email, uid: user.uid }));
        console.log("user", user.email);
      }
    });
  }, []);
  return currentUser.email ? <LoggedIn /> : <Welcome />;
}
  const dispatch = useDispatch();
  const currentUser = useSelector((state) => state.user.value);
  useEffect(() => {
    auth.onAuthStateChanged((user) => {
      if (user) {
        dispatch(setCurrentUser({ email: user.email, uid: user.uid }));
        console.log("user", user.email);
      }
    });
  }, [currentUser]);
  return currentUser?.email ? <LoggedIn /> : <Welcome />;
}

也許,這會有所幫助。 只需將 currentUser 添加到第二個參數數組

我知道onAuthStateChanges()方法是異步的。 所以只需在這個方法中移動重定向。

  const dispatch = useDispatch();
  const currentUser = useSelector((state) => state.user.value);
  useEffect(() => {
    auth.onAuthStateChanged((user) => {
      if (user) {
        dispatch(setCurrentUser({ email: user.email, uid: user.uid }));
        console.log("user", user.email);
        openRoute(<LoggedIn />)
        return
      }
      openRoute(<Welcome />)
    });
  }, []);
}

每當 auth state 更改時,此 function 就會觸發,因此如果您注銷,您想返回登錄頁面,這種方式將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM