React根据当前页面路由进行自动高亮示例代码

 更新时间:2024年07月29日 08:27:22   作者:一汀烟雨  
要根据当前页面路由自动高亮顶部菜单项,可以使用 React Router 的 useLocation 钩子来获取当前路径,并根据路径动态设置菜单项的高亮效果,本文给大家介绍了一个完整的示例,展示如何根据当前页面路由自动高亮顶部菜单项,需要的朋友可以参考下

要根据当前页面路由自动高亮顶部菜单项,可以使用 React Router 的 useLocation 钩子来获取当前路径,并根据路径动态设置菜单项的高亮效果。

示例代码

以下是一个完整的示例,展示如何根据当前页面路由自动高亮顶部菜单项:

1. 安装 React Router

首先,确保你已经安装了 React Router:

npm install react-router-dom

2. 创建菜单和路由组件

我们需要创建一个包含菜单和路由的主组件,并使用 useLocation 钩子来动态设置高亮的菜单项。

3. 定义路由和菜单项

定义你的路由和菜单项,并在菜单组件中根据当前路径设置高亮效果。

App.tsx

import React from 'react';
import { BrowserRouter as Router, Route, Routes, Link, useLocation } from 'react-router-dom';
import './App.css';

const menuItems = [
  { name: 'Home', path: '/' },
  { name: 'About', path: '/about' },
  { name: 'Services', path: '/services' },
  { name: 'Contact', path: '/contact' },
];

const Menu: React.FC = () => {
  const location = useLocation();

  return (
    <div className="menu">
      {menuItems.map((item, index) => (
        <Link key={index} to={item.path} className={`menu-item ${location.pathname === item.path ? 'active' : ''}`}>
          {item.name}
        </Link>
      ))}
    </div>
  );
};

const Home: React.FC = () => <div>Home Page</div>;
const About: React.FC = () => <div>About Page</div>;
const Services: React.FC = () => <div>Services Page</div>;
const Contact: React.FC = () => <div>Contact Page</div>;

const App: React.FC = () => {
  return (
    <Router>
      <Menu />
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
        <Route path="/services" element={<Services />} />
        <Route path="/contact" element={<Contact />} />
      </Routes>
    </Router>
  );
};

export default App;

App.css

.menu {
  display: flex;
  justify-content: center;
  gap: 20px;
  padding: 20px;
  background-color: #f0f0f0;
}

.menu-item {
  padding: 10px 20px;
  cursor: pointer;
  text-decoration: none;
  color: black;
  transition: background-color 0.3s, color 0.3s;
}

.menu-item:hover {
  background-color: #d3d3d3;
}

.menu-item.active {
  background-color: #1976d2;
  color: white;
  border-radius: 4px;
}

解释

  • App.tsx:

    • menuItems 数组定义了菜单项及其对应的路径。
    • Menu 组件使用 useLocation 钩子来获取当前路径,并根据路径动态设置菜单项的高亮效果。
    • 使用 Link 组件代替 a 标签,确保在单页面应用中进行无刷新导航。
    • 定义了几个简单的路由组件 (Home, About, Services, Contact) 以展示页面内容。
    • Router 组件包裹整个应用,Routes 组件定义了应用的路由。
  • App.css:

    • 定义了基础的菜单样式。
    • .menu-item 类定义了菜单项的基本样式。
    • .menu-item:hover 类定义了悬停时的样式。
    • .menu-item.active 类定义了高亮状态的样式,包括背景颜色和文本颜色的变化。

到此这篇关于React根据当前页面路由进行自动高亮示例代码的文章就介绍到这了,更多相关React自动高亮内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • react中使用js实现页面滚动监听(推荐)

    react中使用js实现页面滚动监听(推荐)

    这篇文章主要介绍了react中使用js实现页面滚动监听,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • react-router v4如何使用history控制路由跳转详解

    react-router v4如何使用history控制路由跳转详解

    这篇文章主要给大家介绍了关于react-router v4如何使用history控制路由跳转的相关资料,文中通过示例代码介绍的的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • React中useState的理解和使用案例

    React中useState的理解和使用案例

    Hook是React16.8的新增特性,它可以让你在不编写class的情况下使用state以及其他的React特性,本文中讲解的useState就是React中的其中一个Hook,这篇文章主要给大家介绍了关于React中useState理解和使用的相关资料,需要的朋友可以参考下
    2024-03-03
  • 浅谈React中的元素、组件、实例和节点

    浅谈React中的元素、组件、实例和节点

    这篇文章主要介绍了浅谈React中的元素、组件、实例和节点,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • npx create-react-app xxx创建项目报错的解决办法

    npx create-react-app xxx创建项目报错的解决办法

    这篇文章主要介绍了npx create-react-app xxx创建项目报错的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • React之虚拟DOM的实现原理

    React之虚拟DOM的实现原理

    这篇文章主要介绍了React之虚拟DOM的实现原理分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • React浅析Fragments使用方法

    React浅析Fragments使用方法

    这篇文章主要介绍了React Fragments使用方法,关于react Fragments,React中一个常见模式是为一个组件返回多个元素。Fragments 可以让你聚合一个子元素列表,并且不在DOM中增加额外节点
    2022-12-12
  • 详解React获取DOM和获取组件实例的方式

    详解React获取DOM和获取组件实例的方式

    这篇文章主要介绍了React获取DOM和获取组件实例的方式,如何创建refs来获取对应的DOM呢?目前有三种方式,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • 基于react后端渲染模板引擎noox发布使用

    基于react后端渲染模板引擎noox发布使用

    本篇文章主要介绍了基于react后端渲染模板引擎noox发布使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • 深入理解react 组件类型及使用场景

    深入理解react 组件类型及使用场景

    这篇文章主要介绍了深入理解react 组件类型及使用场景,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03

最新评论