Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 用户外部不';无法在第一页加载时工作。下一代_Reactjs_Routes_React Hooks_Next.js - Fatal编程技术网

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
添加到依赖项数组解决了该问题。我不确定删除
挂载的
是否是一个明智的主意,因为我在添加它之前收到了一个警告。