我正在嘗試在下一個 JS 中創建一個受保護的路由。如果沒有用戶到登錄頁面,我添加了一個使用效果來重定向
useEffect(() => {
if (!user) {
router.push("/admindashboard");
} else {
return;
}
}, [user]);
問題是我正在為 supabase 使用自定義鉤子,我在那里打電話給用戶。并且當頁面由于某種原因加載時它為空然后對用戶來說是正確的但是因為它是空的它在不需要時重定向我對如何防止這種情況感到困惑
鉤
const { userLoaded, user, signOut, session, userDetails, subscription } =
useUser();
示例頁面
const newjob = () => {
const { userLoaded, user, signOut, session, userDetails, subscription } =
useUser();
const router = useRouter();
console.log(user, "Session");
useEffect(() => {
if (!user) {
router.push("/dashboard");
} else {
return;
}
}, [user]);
return (
<>
......
</>
);
};
export default newjob;
改變 userLoaded 的內部鉤子
useEffect(() => {
if (user) {
Promise.allSettled([getUserDetails(), getSubscription()]).then(
(results) => {
setUserDetails(results[0].value.data);
setSubscription(results[1].value.data);
setUserLoaded(true);
}
);
}
}, [user]);
uj5u.com熱心網友回復:
您只需將 isLoading 添加到用戶即可,這很簡單。
isLoading 的第一個值需要為真。
useEffect(() => {
if (!isLoading && !user) {
router.push("/admindashboard");
return;
}
return;
}, [user, isLoading]);
uj5u.com熱心網友回復:
if (userLoaded && !user) {
router.push("/admindashboard");
} else {
return;
}
}, [user, userLoaded]);
這應該可以解決問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/357751.html
標籤:javascript 反应 下一个.js
上一篇:正則運算式針對變數周圍的特定字符
