笔记十九*、选中高亮和嵌套路由使用

App.jsx

javascript 复制代码
import React from "react";
import {NavLink, useRoutes} from "react-router-dom";
import routes from "./routes/index.jsx";
import "./app.css"

const App = () => {
    const element = useRoutes(routes);
    // 选中高亮
    const activeStyle = ({isActive}) => {
        return isActive ? 'background' : "";
    };
    return (
        <div className="all">
            <div>
                <div className="link">
                    <NavLink to="/home" className={activeStyle}>打开首页的页面</NavLink>
                </div>
                <div className="link">
                    <NavLink to="/about" className={activeStyle}>打开关于的页面</NavLink>
                </div>
            </div>
            <div className="view">
                {element}
            </div>
        </div>
    );
}

export default App;

19.2 嵌套路由

home(首页的页面)中嵌套两个字路由,并对字路由设置选中高亮

Home/index.jsx -> 类组件

javascript 复制代码
import React from "react";
import {NavLink, Outlet} from "react-router-dom";

class App extends React.Component {

    // 类组件中不能用const定义变量
    // 选中高亮
    activeStyle = ({isActive}) => {
        return isActive ? 'background' : "";
    };

    render() {
        return (
            <div>
                首页的页面
                <div style={{display: "flex", justifyContent: 'center', marginTop: '20px'}}>
                    <NavLink to='classify' className={this.activeStyle}>classify</NavLink>
                    <NavLink to='navigation' className={this.activeStyle}>navigation</NavLink>
                </div>
                <div style={{background: 'red'}}>
                    {/*<!-- Renders the child route's element, if there is one. -->*/}
                    <Outlet/>
                </div>
            </div>);
    }
}

export default App;

路由表 routes

javascript 复制代码
import {Navigate} from "react-router-dom";
import Home from "../components/Home";
import About from "../components/About";
import Classify from "../components/Home/components/Classify.jsx";
import Navigation from "../components/Home/components/Navigation.jsx";

export default [
    {
        path: '/home',
        element: <Home/>,
        children: [
            {
                path: 'classify',
                element:<Classify />
            },
            {
                path: 'navigation',
                element:<Navigation />
            },
        ]
    },
    {
        path: '/about',
        element: <About/>,
    },
    {
        path: '/',
        element: <Navigate to='about'/>,
    }
]

下面附一张文件结构图

相关推荐
崎岖Qiu3 分钟前
【OS笔记40】:设备管理 - 通道控制方式
笔记·操作系统·dma·os
byzh_rc6 分钟前
[微机原理与系统设计-从入门到入土] 微型计算机基础
开发语言·javascript·ecmascript
m0_471199637 分钟前
【小程序】订单数据缓存 以及针对海量库存数据的 懒加载+数据分片 的具体实现方式
前端·vue.js·小程序
编程大师哥8 分钟前
Java web
java·开发语言·前端
A小码哥9 分钟前
Vibe Coding 提示词优化的四个实战策略
前端
Murrays9 分钟前
【React】01 初识 React
前端·javascript·react.js
大喜xi13 分钟前
ReactNative 使用百分比宽度时,aspectRatio 在某些情况下无法正确推断出高度,导致图片高度为 0,从而无法显示
前端
helloCat13 分钟前
你的前端代码应该怎么写
前端·javascript·架构
电商API_1800790524713 分钟前
大麦网API实战指南:关键字搜索与详情数据获取全解析
java·大数据·前端·人工智能·spring·网络爬虫
康一夏15 分钟前
CSS盒模型(Box Model) 原理
前端·css