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

如何在React中使用react-router-dom让NotFound页面隐藏Navbar

解决React Router中NotFound页面隐藏Navbar的问题

这里提供两种简单可行的实现方式:

方式一:通过路由路径判断控制Navbar显示

利用useLocation钩子获取当前路由路径,仅在指定的有效页面渲染Navbar:

import { BrowserRouter as Router, Routes, Route, useLocation } from 'react-router-dom';
import { Home } from '../Pages/Home';
import { Login } from '../Pages/Login';
import { Register } from '../Pages/Register';
import Navbar from './Navbar'; // 确保正确导入Navbar组件

function App() {
  const location = useLocation();
  // 定义需要显示Navbar的路由路径
  const validPaths = ['/home', '/login', '/register'];
  // 仅当当前路径在有效列表中时渲染Navbar
  const showNavbar = validPaths.includes(location.pathname);

  return (
    <Router>
      {showNavbar && <Navbar />}
      <Routes>
        <Route path='/home' element={<Home />} />
        <Route path='/login' element={<Login />} />
        <Route path='/register' element={<Register />} />
        <Route path="*" element={<h1>Page Not Found</h1>} />
      </Routes>
    </Router>
  );
}

export default App;

方式二:使用嵌套路由拆分布局

通过嵌套路由将需要Navbar的页面统一放到带布局的父路由下,NotFound页面单独作为顶级路由:

import { BrowserRouter as Router, Routes, Route, Outlet } from 'react-router-dom';
import { Home } from '../Pages/Home';
import { Login } from '../Pages/Login';
import { Register } from '../Pages/Register';
import Navbar from './Navbar';

// 定义包含Navbar的布局组件
function LayoutWithNavbar() {
  return (
    <>
      <Navbar />
      <Outlet /> {/* Outlet用于渲染子路由的页面内容 */}
    </>
  );
}

function App() {
  return (
    <Router>
      <Routes>
        {/* 所有需要Navbar的页面都嵌套在这个父路由下 */}
        <Route element={<LayoutWithNavbar />}>
          <Route path='/home' element={<Home />} />
          <Route path='/login' element={<Login />} />
          <Route path='/register' element={<Register />} />
        </Route>
        {/* NotFound页面无布局包裹,自然不会显示Navbar */}
        <Route path="*" element={<h1>Page Not Found</h1>} />
      </Routes>
    </Router>
  );
}

export default App;

两种方式都能实现需求,方式二更适合后续扩展新页面,推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:46:23