You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React导航栏无法显示登录用户用户名的问题求助

解决React Navbar登录后用户名不显示的问题

你的代码存在几处语法错误,这是导致用户名无法正常显示的主要原因,以下是修正方案:

一、修复核心语法问题

  • 箭头函数语法错误:then(response = {、catch(error = {、useEffect(() = { 需改为箭头函数的正确写法 =>
  • useEffect依赖数组格式错误:结尾应为 }, []) 而非 []);
  • JSX转义字符问题:将 &lt;、&amp;&amp; 还原为原生JSX的 <、&&

二、修正后的完整代码

import { useState, useEffect } from 'react';
import { useNavigate } from 'react-router-dom';
import axios from 'axios';
import { Nav } from 'react-bootstrap'; // 假设使用react-bootstrap的Nav组件

const API_URL = '你的实际API地址';

function NavbarScroll() {
  const navigate = useNavigate();
  const [user, setUser] = useState(null);

  function handleLogout() {
    axios.post(`${API_URL}/logout`)
      .then(response => {
        localStorage.removeItem('user');
        setUser(null);
        navigate('/');
      })
      .catch(error => {
        console.error(error);
      });
  }

  useEffect(() => {
    const userData = JSON.parse(localStorage.getItem('user'));
    console.log('userData:', userData);
    if (userData !== null) {
      setUser(userData);
    }
    // setState是异步操作,此处直接打印user会显示旧值,可删除或通过监听user状态查看更新后的值
  }, []);

  return (
    <Nav.Link>
      {user && <span>Welcome, {user.username}</span>}
    </Nav.Link>
  );
}

export default NavbarScroll;

三、额外检查点

  • 确认localStorage中存储的user对象确实包含username字段,可通过浏览器开发者工具的Application面板查看
  • 若需监听user状态变化,可添加额外的useEffect:
    useEffect(() => {
      console.log('更新后的用户数据:', user);
    }, [user]);
    

内容的提问来源于stack exchange,提问作者Monsef Amz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 20:47:24