React根據(jù)當(dāng)前頁面路由進(jìn)行自動高亮示例代碼
要根據(jù)當(dāng)前頁面路由自動高亮頂部菜單項,可以使用 React Router 的 useLocation 鉤子來獲取當(dāng)前路徑,并根據(jù)路徑動態(tài)設(shè)置菜單項的高亮效果。
示例代碼
以下是一個完整的示例,展示如何根據(jù)當(dāng)前頁面路由自動高亮頂部菜單項:
1. 安裝 React Router
首先,確保你已經(jīng)安裝了 React Router:
npm install react-router-dom
2. 創(chuàng)建菜單和路由組件
我們需要創(chuàng)建一個包含菜單和路由的主組件,并使用 useLocation 鉤子來動態(tài)設(shè)置高亮的菜單項。
3. 定義路由和菜單項
定義你的路由和菜單項,并在菜單組件中根據(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ù)組定義了菜單項及其對應(yīng)的路徑。Menu組件使用useLocation鉤子來獲取當(dāng)前路徑,并根據(jù)路徑動態(tài)設(shè)置菜單項的高亮效果。- 使用
Link組件代替a標(biāo)簽,確保在單頁面應(yīng)用中進(jìn)行無刷新導(dǎo)航。 - 定義了幾個簡單的路由組件 (
Home,About,Services,Contact) 以展示頁面內(nèi)容。 Router組件包裹整個應(yīng)用,Routes組件定義了應(yīng)用的路由。
App.css:- 定義了基礎(chǔ)的菜單樣式。
.menu-item類定義了菜單項的基本樣式。.menu-item:hover類定義了懸停時的樣式。.menu-item.active類定義了高亮狀態(tài)的樣式,包括背景顏色和文本顏色的變化。
到此這篇關(guān)于React根據(jù)當(dāng)前頁面路由進(jìn)行自動高亮示例代碼的文章就介紹到這了,更多相關(guān)React自動高亮內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入React?18源碼useMemo?useCallback?memo用法及區(qū)別分析
這篇文章主要為大家介紹了React?18源碼深入分析useMemo?useCallback?memo用法及區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
React實現(xiàn)復(fù)雜搜索表單的展開收起功能
本節(jié)對于需要展開收起效果的查詢表單進(jìn)行概述,主要涉及前端樣式知識。對React實現(xiàn)復(fù)雜搜索表單的展開-收起功能感興趣的朋友一起看看吧2021-09-09
React結(jié)合Drag?API實現(xiàn)拖拽示例詳解
這篇文章主要為大家介紹了React結(jié)合Drag?API實現(xiàn)拖拽示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
淺談React Native Flexbox布局(小結(jié))
這篇文章主要介紹了淺談React Native Flexbox布局(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01

