antd二级菜单选择后页面切换但是菜单未选中
要实现二级菜单选择后页面切换且菜单选中的效果,可以使用路由来实现。以下是一种可能的实现方式:
- 首先,导入
react-router-dom中的相关组件:BrowserRouter、Route、Link。
import { BrowserRouter, Route, Link } from 'react-router-dom';
- 在组件的 JSX 中,使用
BrowserRouter组件包裹整个页面,并在其内部定义路由规则。
<BrowserRouter>
<div>
<ul>
<li>
<Link to="/">Home</Link>
</li>
<li>
<Link to="/menu1">Menu 1</Link>
</li>
<li>
<Link to="/menu2">Menu 2</Link>
</li>
</ul>
<hr />
<Route exact path="/" component={Home} />
<Route path="/menu1" component={Menu1} />
<Route path="/menu2" component={Menu2} />
</div>
</BrowserRouter>
-
在
Link组件中,使用to属性来指定要跳转的路由路径。 -
在
Route组件中,使用path属性来指定要匹配的路由路径,并使用component属性来指定要渲染的组件。 -
在菜单项的
li标签中,可以通过className属性来设置选中菜单项的样式。
const Menu1 = () => {
return <h2>Menu 1</h2>;
};
const Menu2 = () => {
return <h2>Menu 2</h2>;
};
const Home = () => {
return <h2>Home</h2>;
};
- 在组件中,根据当前路由路径来确定哪个菜单项应该被选中。可以使用
useLocation钩子来获取当前路由路径。
import { useLocation } from 'react-router-dom';
const Menu = () => {
const location = useLocation();
return (
<ul>
<li className={location.pathname === '/' ? 'active' : ''}>
<Link to="/">Home</Link>
</li>
<li className={location.pathname === '/menu1' ? 'active' : ''}>
<Link to="/menu1">Menu 1</Link>
</li>
<li className={location.pathname === '/menu2' ? 'active' : ''}>
<Link to="/menu2">Menu 2</Link>
</li>
</ul>
);
};
- 在 CSS 中,可以为选中的菜单项设置样式,例如:
li.active {
background-color: #f0f0f0;
}
通过以上步骤,当点击菜单项时,页面会根据路由规则进行切换,并且菜单项会根据当前路由路径来确定是否被选中。
原文地址: https://www.cveoy.top/t/topic/jd0G 著作权归作者所有。请勿转载和采集!