React根據(jù)當(dāng)前頁面路由進(jìn)行自動(dòng)高亮示例代碼
要根據(jù)當(dāng)前頁面路由自動(dòng)高亮頂部菜單項(xiàng),可以使用 React Router 的 useLocation
鉤子來獲取當(dāng)前路徑,并根據(jù)路徑動(dòng)態(tài)設(shè)置菜單項(xiàng)的高亮效果。
示例代碼
以下是一個(gè)完整的示例,展示如何根據(jù)當(dāng)前頁面路由自動(dòng)高亮頂部菜單項(xiàng):
1. 安裝 React Router
首先,確保你已經(jīng)安裝了 React Router:
npm install react-router-dom
2. 創(chuàng)建菜單和路由組件
我們需要?jiǎng)?chuàng)建一個(gè)包含菜單和路由的主組件,并使用 useLocation
鉤子來動(dòng)態(tài)設(shè)置高亮的菜單項(xiàng)。
3. 定義路由和菜單項(xiàng)
定義你的路由和菜單項(xiàng),并在菜單組件中根據(jù)當(dāng)前路徑設(shè)置高亮效果。
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
數(shù)組定義了菜單項(xiàng)及其對(duì)應(yīng)的路徑。Menu
組件使用useLocation
鉤子來獲取當(dāng)前路徑,并根據(jù)路徑動(dòng)態(tài)設(shè)置菜單項(xiàng)的高亮效果。- 使用
Link
組件代替a
標(biāo)簽,確保在單頁面應(yīng)用中進(jìn)行無刷新導(dǎo)航。 - 定義了幾個(gè)簡(jiǎn)單的路由組件 (
Home
,About
,Services
,Contact
) 以展示頁面內(nèi)容。 Router
組件包裹整個(gè)應(yīng)用,Routes
組件定義了應(yīng)用的路由。
App.css
:- 定義了基礎(chǔ)的菜單樣式。
.menu-item
類定義了菜單項(xiàng)的基本樣式。.menu-item:hover
類定義了懸停時(shí)的樣式。.menu-item.active
類定義了高亮狀態(tài)的樣式,包括背景顏色和文本顏色的變化。
到此這篇關(guān)于React根據(jù)當(dāng)前頁面路由進(jìn)行自動(dòng)高亮示例代碼的文章就介紹到這了,更多相關(guān)React自動(dòng)高亮內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React使用setState更新數(shù)組的方法示例(追加新數(shù)據(jù))
在?React?中,setState?是管理組件狀態(tài)的核心方法之一,然而,當(dāng)我們需要更新狀態(tài)中的數(shù)組時(shí),如何高效且安全地操作變得尤為關(guān)鍵,本文將詳細(xì)解析以下代碼的實(shí)現(xiàn)邏輯,幫助你掌握在?React?中追加數(shù)組數(shù)據(jù)的最佳實(shí)踐,需要的朋友可以參考下2025-03-03React組件內(nèi)事件傳參實(shí)現(xiàn)tab切換的示例代碼
本篇文章主要介紹了React組件內(nèi)事件傳參實(shí)現(xiàn)tab切換的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07React實(shí)現(xiàn)組件之間狀態(tài)共享的幾種方法
在開發(fā)現(xiàn)代Web應(yīng)用時(shí),管理組件之間的狀態(tài)共享是一個(gè)重要的課題,特別是在使用React這個(gè)流行的前端庫時(shí),如何有效地在不同組件之間傳遞狀態(tài),確保應(yīng)用的響應(yīng)性和可維護(hù)性,是我們需要掌握的關(guān)鍵技能,在本文中,我們將探討幾種有效的狀態(tài)共享策略,需要的朋友可以參考下2025-02-02react.js使用webpack搭配環(huán)境的入門教程
本文主要介紹了react 使用webpack搭配環(huán)境的入門教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-08-08react中實(shí)現(xiàn)修改input的defaultValue
這篇文章主要介紹了react中實(shí)現(xiàn)修改input的defaultValue方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05詳解關(guān)于react-redux中的connect用法介紹及原理解析
本篇文章主要介紹了詳解關(guān)于react-redux中的connect用法介紹及原理解析,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09Input標(biāo)簽自動(dòng)校驗(yàn)功能去除實(shí)現(xiàn)
這篇文章主要為大家介紹了Input標(biāo)簽的自動(dòng)拼寫檢查功能去除實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07