react中嵌套路由以及默认显示二级路由

1.安装插件

javascript 复制代码
npm install react-router-dom

2.新建文件及页面

在scr/page下新建layout、about、home文件夹,分别在对应的文件夹下新建入口文件index.js;src下新建router文件夹,该文件夹下新建入口文件index.js

3.配置路由

如何配置路由:http://t.csdnimg.cn/dJ8C2

src/router/index.js

javascript 复制代码
// 1.引入方法,用于创建路由实例
import { createBrowserRouter } from 'react-router-dom' 

// 2.引入组件
import LoginPage from '../page/login';
import IndexPage from '../page/index';
import Layout from '../page/layout';
import About from '../page/about';
import Home from '../page/home';

// 3.创建router实例,配置路由
const router = createBrowserRouter([ 
  {
    path:"/layout",
    element:<Layout></Layout>,
    children:[
      {
        index:true, // 默认显示该路由
        element:<About></About>
      },
      {
        path:'/layout/home',
        element:<Home></Home>
      }
    ]
  },
  {
    // path:"/login", // searchParams方式传参
    path:"/login/:id/:name", // params方式传参
    element:<LoginPage></LoginPage> // 渲染页面的地方
  },
  {
    path:"/index",
    element:<IndexPage></IndexPage>
  },
  {
    path:"",
    element:<div>欢迎来到首页</div>
  }
])

// 4.暴露路由实例,用于在App.js主入口组件
export default router;

4.页面编写

src/page/about/index.js

javascript 复制代码
function About(){
    return (
        <div>我是about</div>
    )
}

export default About

src/page/home/index.js

javascript 复制代码
function Home(){
    return (
        <div>我是home</div>
    )
}

export default Home

src/page/layout/index.js

javascript 复制代码
// 说明:该组件作为一级路由渲染页面,Outlet是用于渲染二级路由页面的标签,是固定写法

import { Link, Outlet, useNavigate } from "react-router-dom"

function Layout() {
    const navigate = useNavigate()
    return (
        <div>
            <div>我是layout</div>
            <button onClick={() => navigate('')}>跳转到about</button>
            <Link to="/layout/home">跳转到home</Link>
            <Outlet></Outlet>
        </div>
    )
}

export default Layout

如何跳转路由:http://t.csdnimg.cn/n0Tgr

src/App.js

javascript 复制代码
import React, { useState, useRef, useEffect, useContext, createContext } from 'react';
// 1.引入
import { RouterProvider } from 'react-router-dom'
import router from './router';



function App() {
  return (
    <div>
      {/* 2.绑定 */}
      <RouterProvider router={router}></RouterProvider>
    </div>
  );
}

export default App;

5.最终效果

相关推荐
web打印社区2 小时前
使用React如何静默打印页面:完整的前端打印解决方案
前端·javascript·vue.js·react.js·pdf·1024程序员节
喜欢踢足球的老罗2 小时前
[特殊字符] PM2 入门实战:从 0 到线上托管 React SPA
前端·react.js·前端框架
小光学长2 小时前
基于Vue的课程达成度分析系统t84pzgwk(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
Baklib梅梅3 小时前
探码科技再获“专精特新”认定:Baklib引领AI内容管理新方向
前端·ruby on rails·前端框架·ruby
南方以南_3 小时前
Chrome开发者工具
前端·chrome
YiHanXii3 小时前
this 输出题
前端·javascript·1024程序员节
楊无好4 小时前
React中ref
前端·react.js
维他命Coco4 小时前
js常见开发学习
javascript
程琬清君4 小时前
vue3 confirm倒计时
前端·1024程序员节
歪歪1004 小时前
在C#中详细介绍一下Visual Studio中如何使用数据可视化工具
开发语言·前端·c#·visual studio code·visual studio·1024程序员节