码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 探索React Router:实现动态二级路由


    在这里插入图片描述

    我有一个路由配置的二维数组,想根据这个数组结合路由组件来动态生成路由,应该怎么样实现。在 React Router 6 中渲染二级路由的方式跟 React Router 65相比有一些变化,但核心思路仍然是利用 Route 组件和路由嵌套的方式。下面是具体的步骤:

    1. 定义路由数组
    const routes = [
      {
        path: '/',
        element: <Home />
      },
      {
        path: '/about',
        element: <About />
      },
      {
        path: '/products',
        element: <Products />,
        children: [
          {
            path: 'list',
            element: <ProductList />
          },
          {
            path: 'details/:id',
            element: <ProductDetails />
          }
        ]
      }
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    注意,这里我们使用 element 属性代替了之前版本中的 component 属性。

    1. 在 App.js 中使用 Routes 和 Route 组件渲染路由
    import { BrowserRouter, Routes, Route } from 'react-router-dom';
    
    function App() {
      return (
        <BrowserRouter>
          <Routes>
            {routes.map((route, index) => (
              <Route
                key={index}
                path={route.path}
                element={<route.element />}
              >
                {route.children && route.children.map((child, idx) => (
                  <Route
                    key={idx}
                    path={`${route.path}/${child.path}`}
                    element={<child.element />}
                  />
                ))}
              </Route>
            ))}
          </Routes>
        </BrowserRouter>
      );
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    在上面的代码中,我们使用 Routes 组件包裹所有的 Route 组件。对于每个路由对象,我们渲染一个 Route 组件,并将 path 和 element 属性传入。如果该路由对象包含子路由,我们使用嵌套的 Route 组件来渲染子路由。

    注意,在 React Router 6 中,我们需要使用字符串模板字面量语法 `${route.path}/${child.path}` 来拼接父路径和子路径。

    1. 在组件中渲染子路由
      对于需要渲染子路由的组件,例如 Products,我们可以使用 Outlet 组件作为子路由的占位符。
    import { Outlet } from 'react-router-dom';
    
    function Products() {
      return (
        <div>
          <h1>Products</h1>
          <Outlet />
        </div>
      );
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    Outlet 组件会根据当前的 URL 路径渲染与之匹配的子路由。

    通过上述步骤,我们就可以在 React Router 6 中动态渲染二级路由了。如果有更深层次的嵌套路由,只需要在 children 数组中继续添加路由配置即可。

  • 相关阅读:
    ThreadLocal源码解析及使用场景
    含文档+PPT+源码等]精品微信小程序电子书城销售系统|商城|电商系统+后台管理系统|前后分离VUE[包运行成功]微信小程序项目源码Java毕业设计
    使用css做一个旋转的八卦图
    Excel 转 Json 、Node.js实现(应用场景:i18n国际化)
    【多媒体技术与实践】音频信息获取和处理——编程题汇总
    基于Springboot的特产销售平台设计与实现毕业设计源码091036
    hai-AcWing计划
    Java 创建多线程
    代码随想录算法训练营第27天|39. 组合总和 40.组合总和II 131.分割回文串
    查找和排序 + 集合 + 单例模式【Java 基础_简单学习】
  • 原文地址:https://blog.csdn.net/sky6862/article/details/138172275
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号