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.最终效果

相关推荐
玩电脑的辣条哥2 小时前
Python如何播放本地音乐并在web页面播放
开发语言·前端·python
ew452182 小时前
ElementUI表格表头自定义添加checkbox,点击选中样式不生效
前端·javascript·elementui
suibian52352 小时前
AI时代:前端开发的职业发展路径拓宽
前端·人工智能
画月的亮2 小时前
element-ui 使用过程中遇到的一些问题及解决方法
javascript·vue.js·ui
Moon.92 小时前
el-table的hasChildren不生效?子级没数据还显示箭头号?树形数据无法展开和收缩
前端·vue.js·html
m0_526119402 小时前
点击el-dialog弹框跳到其他页面浏览器的滚动条消失了多了 el-popup-parent--hidden
javascript·vue.js·elementui
垚垚 Securify 前沿站2 小时前
深入了解 AppScan 工具的使用:筑牢 Web 应用安全防线
运维·前端·网络·安全·web安全·系统安全
工业甲酰苯胺5 小时前
Vue3 基础概念与环境搭建
前端·javascript·vue.js
lyj1689975 小时前
el-tree选中数据重组成树
javascript·vue.js·elementui
mosquito_lover16 小时前
怎么把pyqt界面做的像web一样漂亮
前端·python·pyqt