import {HashRouter as Router, Routes, Route, NavLink} from 'react-router-dom'; import {useState, useEffect} from 'react'; import TimestampPage from './pages/TimestampPage'; // import ElectronicWoodenFishPage from "./pages/ElectronicWoodenFishPage"; import './App.css'; // 导航项配置数组,便于后续添加 // 为了测试折叠功能,我们添加更多导航项 const navItems = [ {path: '/', label: '时间戳', element: }, // {path: '/dzmy', label: '电子木鱼', element: }, ]; function App() { const [isMenuOpen, setIsMenuOpen] = useState(false); const [isMobile, setIsMobile] = useState(false); const [visibleItems, setVisibleItems] = useState(navItems.length); // 检测屏幕尺寸变化 useEffect(() => { const handleResize = () => { const width = window.innerWidth; setIsMobile(width < 768); // 根据屏幕宽度决定显示多少个导航项 if (width >= 768) { setVisibleItems(navItems.length); // 大屏幕显示所有 } else if (width >= 480) { // 中等屏幕:如果导航项超过3个,显示3个,否则显示全部 setVisibleItems(Math.min(3, navItems.length)); } else { // 小屏幕:如果导航项超过2个,显示2个,否则显示全部 setVisibleItems(Math.min(2, navItems.length)); } }; handleResize(); // 初始调用 window.addEventListener('resize', handleResize); return () => window.removeEventListener('resize', handleResize); }, []); // 计算哪些导航项应该显示,哪些应该折叠 const visibleNavItems = navItems.slice(0, visibleItems); const collapsedNavItems = navItems.slice(visibleItems); return ( {visibleNavItems.map((item) => ( isActive ? "nav-link active" : "nav-link"} onClick={() => isMobile && setIsMenuOpen(false)} > {item.label} ))} {/* 折叠的导航项 */} {collapsedNavItems.length > 0 && ( {isMenuOpen && collapsedNavItems.map((item) => ( isActive ? "nav-link active" : "nav-link"} onClick={() => setIsMenuOpen(false)} > {item.label} ))} setIsMenuOpen(!isMenuOpen)} aria-label={isMenuOpen ? "收起菜单" : "展开菜单"} > {isMenuOpen ? '×' : '☰'} {collapsedNavItems.length > 0 && !isMenuOpen && ( +{collapsedNavItems.length} )} )} {navItems.map((item) => ( ))} ); } export default App;