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

1.安装插件

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

// 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

function About(){
    return (
        <div>我是about</div>
    )
}

export default About

src/page/home/index.js

function Home(){
    return (
        <div>我是home</div>
    )
}

export default Home

src/page/layout/index.js

// 说明:该组件作为一级路由渲染页面,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

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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了在React实现一级和二级路由,我们可以使用React Router。下面是一个示例,演示如何使用React Router实现一级和二级路由路由循环: ```javascript import React from 'react'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; // 一级路由组件 import Home from './Home'; import About from './About'; import Contact from './Contact'; // 二级路由组件 import Profile from './Profile'; import Settings from './Settings'; // 一级路由数组 const routes = [ { path: '/', component: Home }, { path: '/about', component: About }, { path: '/contact', component: Contact }, ]; // 二级路由数组 const profileRoutes = [ { path: '/profile', exact: true, component: Profile }, { path: '/profile/settings', component: Settings }, ]; // 路由循环 const RouteWithSubRoutes = (route) => ( <Route path={route.path} exact={route.exact} render={(props) => ( <route.component {...props} routes={route.routes} /> )} /> ); // App组件 const App = () => ( <Router> <Switch> {routes.map((route, i) => ( <RouteWithSubRoutes key={i} {...route} /> ))} <Route path="/profile" render={() => ( <CompileRouter routes={profileRoutes} /> )} /> </Switch> </Router> ); export default App; ``` 在上面的代码,我们首先定义了一级路由二级路由的组件。然后,我们将一级路由二级路由分别存储在`routes`和`profileRoutes`数组。接下来,我们定义了一个`RouteWithSubRoutes`组件,用于循环渲染路由。最后,在`App`组件,我们使用`Switch`组件来渲染一级路由,并在二级路由的父级路由使用`CompileRouter`组件来渲染二级路由
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值