想要通过react-router-dom实现类似vue的router-view的嵌套路由效果,在点击导航菜单时切换页面,官方文档是真的没找到相关内容,现做个总结:

  1. 在createBrowserRouter的配置中配置给目标路由配置子路由;
  2. 在目标组件的相应位置添加一个<Outlet />作为子路由的组件渲染容器(Outlet组件类似vue的router-view);
  3. 在点击menu时通过useNavigate实现路由跳转。

// router.jsx

import { Router, RouterProvider, createBrowserRouter, Route } from 'react-router-dom';
import Index from "../pages/Index";
import Login from '../pages/Login';
import Admin from '../pages/admin/index';
import Resource from '../pages/admin/Resource'; // 路由
export default function Routes () {
const router = createBrowserRouter([
{
path: '/',
element: <Index />
},
{
path: '/login',
element: <Login />
},
{
path: '/admin',
element: <Admin />,
children: [
{
path: "*",
element: <div>404</div>
},
{
path: "",
element: <div>admin index</div>
},
{
path: 'Resource',
element: <Resource />
}
]
}
]); return (
<RouterProvider router={ router } />
)
};

// admin.jsx

 const navigator = useNavigate();

  const switchPage = (key) => {
setSelectedKey(key);
navigator(key);
};

另外:“*”path可以处理为匹配的的路由,用了自定义404页面

react-router-dom嵌套路由实践的更多相关文章

  1. 关于react router 4 的小实践

    详细代码栗子:https://github.com/wayaha/react-dom-CY clone然后 npm install npm start 分割线 1.这个项目使用create-react ...

  2. react - 多层级嵌套路由支持

    routerCofing配置 { path: '/route1/someModel', children: [ { path: '/route2', component: RouteBase.Cps1 ...

  3. React router 4 获取路由参数,跨页面参数

    1. match通过路径 <Route path="/path/:name" component={example} /> 路由组件内获取参数使用 this.props ...

  4. React 实践记录 03 React router

    Introduction 本文主要参考了react router 的官方文档. React Router是一套完整的配合React的路由解决方案,可能你已经知道前端路由,或者知道后端有路由的概念,如下 ...

  5. React Router 4.x 开发,这些雷区我们都帮你踩过了

    前言 在前端框架层出不穷的今天,React 以其虚拟 DOM .组件化开发思想等特性迅速占据了主流位置,成为前端开发工程师热衷的 Javascript 库.作为 React 体系中的重要组成部分:Re ...

  6. React Router学习笔记(转自阮一峰老师博客)

    React Router是一个路由库,通过管理URL来实现组件切换和状态转变. 1.安装和使用 $ npm install -S react-router 在使用时,作为React组件导入 impor ...

  7. 06 Vue路由简介,原理,实现及嵌套路由,动态路由

    路由概念 路由的本质就是一种对应关系,比如说我们在url地址中输入我们要访问的url地址之后,浏览器要去请求这个url地址对应的资源. 那么url地址和真实的资源之间就有一种对应的关系,就是路由. 路 ...

  8. React Router 4.0 ---- 嵌套路由和动态路由

    嵌套路由,从广义上来说,分为两种情况:一种是每个路由到的组件都有共有的内容,这时把共有的内容抽离成一个组件,变化的内容也是一个组件,两种组件组合嵌套,形成一个新的组件.另一种是子路由,路由到的组件内部 ...

  9. 【共享单车】—— React后台管理系统开发手记:Router 4.0路由实战演练

    前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录.最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star. ...

  10. react router 4.0以上的路由应用

    thead>tr>th{padding:8px;line-height:1.4285714;border-top:1px solid #ddd}.table>thead>tr& ...

随机推荐

  1. kubernets学习笔记二

    Kubernetes部署"容器化应用" Kubernetes整体架构 何为"容器化应用"? 通俗点来说,就是你把一个程序放在docker里部署,这个docker ...

  2. MySQL安装-centos7

    mysql centos7上安装有3中方法  1yum安装 2rpm安装 3编译安装 方法一 rpm安装 1.查找以前是否安装有mysql,使用下面命令:rpm –qa | grep -i mysql ...

  3. 深入剖析Vue框架:从基础到未来趋势

    深入剖析Vue框架:从基础到未来趋势 Vue 框架简介 Vue.js 是一款用于构建用户界面的 JavaScript 框架 ,它基于标准 HTML.CSS 和 JavaScript 构建,并提供了一套 ...

  4. macos修改hosts后清理dns缓存

    sudo killall -HUP mDNSResponder sudo killall mDNSResponderHelper sudo dscacheutil -flushcache

  5. Codeforces 1749E Cactus Wall 题解 [ 紫 ] [ 01 BFS ] [ 图论建模 ] [ 构造 ] [ adhoc ]

    一道很好的思维题,被教练碾压了. 观察 首先从题目给的样例入手: 5 5 ..... ..... ..... ..... ..... 这种情况最终的答案是: YES ....# ...#. ..#.. ...

  6. 项目愿景 (Product Vision)、产品目标 (Product Goal) 、Sprint目标 (Sprint Goal) 及 示例

    愿景(Vision) 是制定业务目标(Business Goal)的基础,后者为确定正确的产品目标 (Product Goal) 创造了环境.同样,每个产品目标作为识别有用的冲刺目标的基础.换句话说, ...

  7. Typecho如何去掉/隐藏index.php

    Typecho后台设置永久链接后,会在域名后加上index.php,很多人都接受不了.例如如下网址:https://www.jichun29.cn/index.php/archives/37/,但我们 ...

  8. ADF - [02] 概念

    题记部分 001 || 管道和活动 一个数据工厂可以有一个或多个管道(Pipeline).管道是共同执行一项任务的活动的逻辑分组.管道可以包含一组活动(Activity),这些活动引入和清除日志数据, ...

  9. pycharm clone GitHub 提示 OpenSSL SSL_read: Connection was reset, errno 10054

    配置界面 错误提示 原因分析 clone的时候需要安全认证,当你在配置页面勾选上ssh ,就会报错 解决方案 在cmd里输入命令,然后再clone git config --global http.s ...

  10. cypress 在 typescript 项目中报错找不到 'tslib'

    原文链接:https://blog.jijian.link/2020-08-11/cypress-typescript-cannot-find-module-tslib/ cypress 在 type ...