Reactjs 用户外部不';无法在第一页加载时工作。下一代
基本上,我有两个页面,一个主页和一个仪表板。每次加载主页时,我都想检查用户是否登录到应用程序。如果用户已登录,则应将其重定向到仪表板。据我所知,此代码应该可以完成以下工作:Reactjs 用户外部不';无法在第一页加载时工作。下一代,reactjs,routes,react-hooks,next.js,Reactjs,Routes,React Hooks,Next.js,基本上,我有两个页面,一个主页和一个仪表板。每次加载主页时,我都想检查用户是否登录到应用程序。如果用户已登录,则应将其重定向到仪表板。据我所知,此代码应该可以完成以下工作: const { auth } = useAuth(); const router = useRouter(); useEffect(() => { let mounted = true; if (auth != null && mounted) { consol
const { auth } = useAuth();
const router = useRouter();
useEffect(() => {
let mounted = true;
if (auth != null && mounted) {
console.log(auth);
router.push("/dashboard");
}
return () => (mounted = false);
}, []);
但是,上面的代码在页面加载或页面刷新时都不起作用。问题是我需要它在页面加载时工作,而该代码只在快速刷新时工作。如果您能就如何解决此问题提供任何建议,我将不胜感激。如评论中所述,您需要将
auth
添加到useffect
的依赖项数组中,以确保在设置该变量时运行该数组
const{auth}=useAuth();
const router=useRouter();
useffect(()=>{
让我们假设这是真的;
if(auth!=null&&mounted){
console.log(auth);
路由器推送(“/仪表板”);
}
return()=>(mounted=false);
},[auth]);
您可能希望将auth
添加到useffect
的依赖项数组中,以确保在设置该变量时运行该数组。最有可能的情况是,在第一次加载时,auth
尚未设置,这意味着router.push
不会发生。另外,您可能应该删除装入的变量。谢谢!将auth
添加到依赖项数组解决了该问题。我不确定删除挂载的是否是一个明智的主意,因为我在添加它之前收到了一个警告。