React Router嵌套子路由

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

目标场景

<Router>
    <Switch>
      {/* 工具页的路由到toolPages组件中配置 */}
      <Route path="/toolPages" component={ToolPages}>
        <Route path="screenShot" component={<ScreenShot />}></Route>
      </Route>
    </Switch>
  </Router>

希望访问/toolpages/screebShot可以定位到【ScreenShot】组件,但是按照我预想的方法不能实现。

寻求理论

Router, Route,Link

  • 当 history 改变时, 会匹配出 Route 的一个分支,并且渲染这个分支中配置的组件,渲染时保持父 route组件嵌套子 route 组件。
  • Route放视图页面
  • Link 相当于是React中的a标签

路由匹配规则

优先级:自顶向下匹配路由

<Route path="/" >
// path遵循路由匹配规则:
//1. :parentName ——匹配一段位于/、?或#之后的URL,命中的部分接收到一个参数{name: ***}
<Route path="/hello/:name" /> //匹配/hello/child
 //2. () ——内部内容认为是可选
<Route path="/hello(/:name)" /> //匹配/hello/child, /hello
 //3. *匹配任意字符(非贪婪的)直到命中下一个字读,或者整个URL的末尾
<Route path="files/*.*" /> //匹配/files/hello.jpg
//如果路由使用了相对路径,那么完整的路径=它所有的祖先节点的路径拼上自身指定的相对路径,使用绝对路径可以忽略嵌套关系

嵌套子路由

先匹配到父组件,父组件要设置支持children传入渲染,但是在v5+版本上这样做不能匹配到第三级子路由。

最终做法

在父组件中做二次路由分配

<Route path="/toolPages" component={ToolPages} />
// ToolPages组件
<Switch>
   <Route path="/toolPages/screenShotPage" component={ScreenShotPage} />
</Switch>

参考文档:
https://react-guide.github.io/react-router-cn/docs/Introduction.html
https://www.ruanyifeng.com/blog/2016/05/react_router.html

React 路由,路由跳转,路由传参,子路由(路由嵌套)详细案例 阅读详情

相关推荐

React(七)- React路由以及嵌套路由的使用

React(七)- React路由前言一. 路由1.1 路由的使用 React系列文章导航 前言 在讲React路由前,先来看下SPA的相关概念: SPA:single page web application 单页Web应用。 整个应用只有一个完整的页面。 点击页面中的链接不会刷新页面,只会做页面的局部更新。 数据都需要通过Ajax请求获取,并在前端异步展示。 一. 路由 路由的概念: 一个路由就是一个映射关系(key:value)。 key是路径,value可能是一个组件或者一个函数。 路由

Zong_0915的博客 2154

use-react-router使用React RouterReact Hook进行发布订阅行为

useReactRouter useReactRouter是一个React Hook,它为react-router提供pub-sub行为。 与withRouter高阶组件不同, useReactRouter会在位置更改时重新呈现您的组件! useReactRouter()返回一个对象,该对象包含HOC将作为props传递的history , location和match属性。 可以在Medium: 上找到有关该程序包设计和开发的教程。 为什么选择Pub-Sub? 发布-订阅行为是对react-router包的常见请求(通常被拒绝)。 对于那些热衷于使用pub-sub行为而不是react-router的建议替代方法的用户,此软件包提供了一个解决方案。 预计非发布订阅的React Hook最终会包含在react-router包本身中。 安装 您必须使用react-routerreact-router-dom v5.0.0或更高版本。 npm install use-react-router或 yarn add use-react-router 利用 导入useReactRo

React router6--路由表多级路由嵌套的默认子路由问题

最近小新在写一个基于React Hooks+Mobx+axios+react-router-dom v6+antD的前端项目,在进行二级路由配置时遇到了一些问题。path:" / " 时,重定向到Layout的子组件Home,路径为 " /home "。组件,然后再去重定向,渲染出子组件Home。,用路由表来统一管理路由,但是这个时候问题出现了。但是再一看,当点击其他的子路由,比如这个例子中的。时,他会渲染对应的子路由,但是!这个属性上,再定义一组子路由规则,但是。打开界面一看效果,嘿~还真行,......

Coding and studying 1727

React-Router>超全react路由知识点(跳转、传参、子路由、重定向等)

路由环境配置,路由懒加载,路由跳转,路由传参,路由嵌套,路由重定向,路由鉴权

m0_48465196的博客 1万+

react使用路由 router 详解

路由就是一个映射关系( key: value)。key 为路径, value 可能是 function 或者是 component。我们学习路由的时候会遇到两个经常用的单词 router 和 route。区别是什么呢?router 是全局的路由器对象。route 是当前激活的路由对象。打个比方哈,我们自己家里上网需要路由器吧,router 就相当于家里的 路由器。route 就相当于路由器上面的网线插口或者是那个天线,不能没有 router 就是用 route。//导入hash路由 as 起个别名。

bangeshengtang的博客 1943

开发中React router6路由表多级路由嵌套的默认子路由问题

最近小新在写一个基于React Hooks+Mobx+axios+react-router-dom v6+antD的前端项目,在进行二级路由配置时遇到了一些问题。path:" / " 时,重定向到Layout的子组件Home,路径为 " /home "。组件,然后再去重定向,渲染出子组件Home。,用路由表来统一管理路由,但是这个时候问题出现了。但是再一看,当点击其他的子路由,比如这个例子中的。时,他会渲染对应的子路由,但是!这个属性上,再定义一组子路由规则,但是。打开界面一看效果,嘿~还真行,...

VX_WJ88950106的博客 2674

React Router v6 中定义子路由嵌套路由)的方式

React Router v6 简化了嵌套路由的实现方式。通过在父级<Route>组件内部直接定义子<Route>,配合/*通配符和index属性,可以清晰构建路由层级。示例展示了如何在/dashboard路径下嵌套/users和/settings子路由,包含默认路由的处理。新方法使代码更直观、易于维护,支持多级嵌套,是组织复杂应用路由结构的推荐方式。

前端小白的博客 358

react-router-dom怎样写子路由页面,嵌套路由,类似 router-view+name,渲染指定内容。

一、场景需求 如图,需要在一个路由中加入三个子路由,需要类似 vue的 【router-view+name】。 二、实现 ./pages ├── App.js ├── threeChildren.js └── aaa.jsx └── bbb.jsx └── ccc.jsx App.js import React, { Component } from "react"; import { HashRouter, Switch, Route, Redirect } from "react-router

Xpy 的博客 1680

react项目—路由和嵌套子路由react-router4.0)

前言:在做项目的时候,花费了几天的时间才把路由问题解决,但是对react的几种路由的区分和使用,我现在也是整的还不清楚。 1、安装相关的包: (1)npm install --save-dev react-router (2)npm install --save-dev react-router-dom (3)npm install --save react-router-config ...

爱吃小笼包子的晓琴 2万+

解决react-router-dom V6路由嵌套子路由无法显示的问题

<Route path="/" element={<NewsSandBox />} /> NewsSandBox组件下的代码: import React from "react"; import { HashRouter, Routes, Route } from "react-router-dom"; import SideMenu from "../../components/sandbox/SideMenu"; import TopHeader from "../../com

余香 6075

五、【React-Router6】路由表 useRoutes() + Outlet

react-router 6 的 路由表 useRoutes() + Outlet

天行健,君子以自强不息 5752

react-router基本使用

react-router 提供了路由核心 api。如 Router, Route, Switch 等,但没有提供有关 dom 操作进行路由跳转的 api。 react-router-dom 提供了 BrowserRouter、Route、Link 等 api,可以通过 dom 操作触发事件控制路由。 react-router-dom 中依赖了 react-router,所以安装的时候只要安装 react-router-dom。 安装 如果安装版本在 >=6, Switch -->Routes v5 版本的文

抱着肩膀笑看看 815

解决react-router-dom V6路由嵌套时,子路由无法显示的问题

You rendered descendant (or called `useRoutes()`) at "/home" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never re

江一铭 3842

React 嵌套路由(简版-----react-router-dom)

React篇 记录初学嵌套路由一步一坑奥利给!!!!!!!!!!!!!!!!!!! 1.routes import Index from '../views/index/Index' import Home from '../views/home/Home' import About from '../views/about/About' import Login from '../views/Login' const routes = [ { name:'login',

weixin_42508580的博客 985

React Router v6使用路由嵌套和重定向

前言:v6版本与v5版本差异较大,以下为V6使用路由嵌套及路由重定向方法,子路由路径不用加"/",v6中会自动拼接 App.jsx import React, { Component } from 'react' import { Route,Routes,Navigate} from 'react-router-dom' import About from './pages/About' import Home from './pages/Home' import Header from './compo

weixin_46077728的博客 3544

react-router嵌套路由

通过属性定义层级关系父路由组件需包含组件作为子路由的渲染占位符路径自动拼接:子路由实际路径为。

2301_78772064的博客 199

React路由--Router --华某

路由传值 1.React-router-dom路由传值 代码如下: 创建入口文件index.js import React from 'react'; import ReactDOM from 'react-dom'; import App from './App' ReactDOM.render(<App />, document.getElementById('root')); ...

z_ZJH的博客 295

什么是嵌套路由?如何定义嵌套路由?

在上面的代码中,我们定义了一个Parent组件作为父路由,包含三个<Link>组件作为子路由链接。在父路由下方,我们使用了<Route>组件,并且指定了子路由的路径和对应的组件。要定义嵌套路由,需要先定义父路由和子路由的组件。父路由和子路由分别使用<Route>组件来定义,并且需要在父路由的组件中嵌入子路由组件的位置。嵌套路由是指在一个路由中套入另一个路由,实现多层路由配置的方式。具体来说,当一个路由需要包含另一个路由时,可以将这个路由配置为父路由,将包含的路由配置为子路由,从而形成一个嵌套路由。

song19990524的博客 272
上一篇: Mac软件种草【持续更新】
DailyCookie
博客等级 码龄12年 2粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值