Javascript 总是在应用程序中的任何路径刷新时重定向到主页

Javascript 总是在应用程序中的任何路径刷新时重定向到主页,javascript,reactjs,react-router-dom,page-refresh,Javascript,Reactjs,React Router Dom,Page Refresh,我正在使用功能组件,该组件使用服务器端身份验证和本地存储为特定路由提供身份验证,例如/home,发生在我的登录页面的提交事件中 一切正常我成功登录后被重定向到主页,当我从任何路径刷新页面时问题就出现了我总是被重定向到主页,为什么会这样 这个问题出现在生产和开发中,有人能给我一个解决方法吗 我的App.js文件是 App.js import React,{useState,useffect}来自“React”; 从“sweetalert2”进口棉签; 进口{ BrowserRouter作为路由器

我正在使用功能组件,该组件使用服务器端身份验证和本地存储为特定路由提供身份验证,例如/home,发生在我的登录页面的提交事件中

一切正常我成功登录后被重定向到主页,当我从任何路径刷新页面时问题就出现了我总是被重定向到主页,为什么会这样

这个问题出现在生产开发中,有人能给我一个解决方法吗

我的App.js文件是

App.js

import React,{useState,useffect}来自“React”;
从“sweetalert2”进口棉签;
进口{
BrowserRouter作为路由器,
路线,,
转换
重新使用
}从“反应路由器dom”;
从“./login/LoginPage”导入登录页面;
从“./home/HomePage”导入主页;
从“./课程/课程”导入课程;
从“/Profile/Profile”导入配置文件;
从“./Notes/Notes”导入注释;
从“./Contact/Contact”导入联系人;
从“./Students/Students”导入学生;
从“./OnlineClass/OnlineClass”导入OnlineClass;
从“./NotFound/NotFound”导入NotFound;
从“/updateData/UpdateClass”导入UpdateClass;
从“/updateData/UpdateNotes”导入UpdateNotes;
常量应用=()=>{
const[loggedIn,setLoggedIn]=useState(false);
useffect(()=>{
const loggedUser=localStorage.getItem('user');
if(loggedUser){
setLoggedIn(真);
}
}, []);
const handleLoggedIn=()=>{
setLoggedIn(真);
};
常量handleLogout=()=>{
喷火({
标题:“你确定吗?”,
showDenyButton:没错,
showCancelButton:true,
confirButtonText:`Yes`,
denyButtonText:`No`,
})。然后((结果)=>{
如果(结果已确认){
setLoggedIn(假);
localStorage.clear();
}否则,如果(结果显示){
Swal.fire(“欢迎回来!”,“信息”);
}
});
};
返回(
{!洛格丁(
) : (
)}
{!洛格丁(
) : (
)}
{!洛格丁(
) : (
)}
);
};
导出默认应用程序


问题是
设置loggedin(true)在重定向操作后执行:

您需要检查用户是否已加载。您可以将loggedIn初始化为
null

const [loggedIn, setLoggedIn] = useState(null);

useEffect(() => {
    const loggedUser = localStorage.getItem('user');
    setLoggedIn(Boolean(loggedUser));
  }, []);
return (
    <div>
      { loggedIn !== null &&
         <Router>
            ...
         </Router>
      }

    </div>
  );
如果
loggedIn==null

const [loggedIn, setLoggedIn] = useState(null);

useEffect(() => {
    const loggedUser = localStorage.getItem('user');
    setLoggedIn(Boolean(loggedUser));
  }, []);
return (
    <div>
      { loggedIn !== null &&
         <Router>
            ...
         </Router>
      }

    </div>
  );
返回(
{loggedIn!==null&&
...
}
);

你真棒,这对我来说非常好。非常感谢你。