的未匹配兜底特性完成。…">
当前位置:首页 > React

react子路由如何匹配404页面

2026-01-26 09:00:16React

在React中实现子路由404匹配

使用React Router v6实现子路由的404页面匹配,可以通过<Route path="*"><Route>的未匹配兜底特性完成。

import { Routes, Route } from 'react-router-dom';

function App() {
  return (
    <Routes>
      <Route path="/parent" element={<ParentLayout />}>
        <Route index element={<ParentHome />} />
        <Route path="child1" element={<Child1 />} />
        <Route path="child2" element={<Child2 />} />
        <Route path="*" element={<NotFound />} />
      </Route>
    </Routes>
  );
}

嵌套路由的404处理方案

当需要为多级嵌套路由单独设置404页面时,可以在每个路由层级末尾添加通配符路由:

<Routes>
  <Route path="/dashboard" element={<DashboardLayout />}>
    <Route index element={<DashboardHome />} />
    <Route path="settings" element={<Settings />} />
    <Route path="*" element={<DashboardNotFound />} />
  </Route>
  <Route path="*" element={<GlobalNotFound />} />
</Routes>

动态路由的404捕获

对于动态参数路由,通配符路由需要放在最后声明:

react子路由如何匹配404页面

<Route path="/products" element={<ProductLayout />}>
  <Route path=":id" element={<ProductDetail />} />
  <Route path="category/:type" element={<CategoryPage />} />
  <Route path="*" element={<ProductNotFound />} />
</Route>

注意要点

  • 通配符路由path="*"必须放在同级路由的最后
  • 不同层级的404组件可以差异化设计
  • 在v6版本中,<Switch>已被<Routes>取代
  • 404组件可以通过useNavigate钩子实现自动重定向逻辑

标签: 路由页面
分享给朋友:

相关文章

vue实现关闭页面

vue实现关闭页面

关闭当前页面的方法 在Vue中关闭当前页面可以通过JavaScript的window.close()方法实现。该方法会关闭当前浏览器窗口或标签页。 methods: { closePage()…

vue实现结算页面

vue实现结算页面

Vue 实现结算页面的方法 数据绑定与表单验证 使用 Vue 的 v-model 实现表单数据的双向绑定,确保用户输入的数据能够实时更新到 Vue 实例中。例如,绑定收货地址、支付方式等表单字段。…

vue路由实现介绍

vue路由实现介绍

Vue 路由基础概念 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。它通过动态映射 URL 到组件,实现无刷新页面切换。核心功能包括: 嵌套路由:支持多…

vue实现页面刻度

vue实现页面刻度

实现页面刻度的基本思路 在Vue中实现页面刻度通常用于展示进度、测量或标记特定位置。可以通过动态计算和渲染刻度元素来实现,结合CSS样式控制显示效果。 使用动态渲染刻度线 通过v-for指令动态生成…

react如何分割页面

react如何分割页面

在React中分割页面的方法 React提供了多种方式来实现页面的分割和模块化,以下是一些常见的方法: 使用组件化开发 将页面拆分为多个独立的组件,每个组件负责特定的功能或UI部分。通过组合这些组件…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…