javascript - 为登录用户显示不同的导航栏
问题描述
我已经在我的应用程序中创建了登录/注册,现在我想根据用户登录显示不同的导航栏。我不为这个项目使用 redux。
在全局的 App 组件中,我创建了我想传递给孩子的状态,然后基于它,显示不同的数据,所以我创建了这样的东西:
function App() {
const [loginStatus, setLoginStatus] = useState();
useEffect(() => {
if(!loginStatus) {
axios.get("http://localhost:5000/api/users/isUserAuth", {
headers: {
"x-access-token": localStorage.getItem("token")
}
}).then((response) => {
console.log(response);
setLoginStatus(true);
})
}}, [])
然后在我的导航栏中我创建了这样的东西:
<NavItem style={{display: loginStatus ? "block" : "none"}}>
这可行,但它会导致 loginStatus 在每次页面刷新时加载,每条路线都会被加载,所以当我在用户登录时转到不同的页面时,它会在 NavItem 出现之前导致 0.5 秒的延迟,因为它会在每次刷新时向后端发出请求。
我如何存储用户登录的信息,这样就不必在每个页面上进行 API 调用?
解决方案
我认为您可以使用localStorage
来存储用户登录信息。
推荐阅读
- file - .Bat 重复文件 X 次?
- python - 如何按时间对项目(从文件中读取)进行分组和计数?
- c# - 如何修复 Xamarin Android 中的“Android.Views.InflateException:二进制 XML 文件第 18 行:错误膨胀类(未找到)LinearLayout”?
- apache-spark - 非流式(批量读写)方法中的 Spark 存储 kafka 偏移检查点
- python - GCP apache气流,如何从私有存储库安装Python依赖项
- angular - 如何解决角度中的跳过位置更改问题
- cdn - 配置 Akamai 以单独缓存下一代图像
- reactjs - 使用 prevState 更新状态,但当来自父级的道具发生变化时
- angular - Angular 8如何在三个组件之间传递数据
- c# - Xamarin.Android - RSACryptoServiceProvider CspParameters 为 null 并且 CryptoKeySecurity 为 null 使用 X509Certificate2