要实现二级菜单选择后页面切换且菜单选中的效果,可以使用路由来实现。以下是一种可能的实现方式:

  1. 首先,导入 react-router-dom 中的相关组件:BrowserRouterRouteLink
import { BrowserRouter, Route, Link } from 'react-router-dom';
  1. 在组件的 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>
  1. Link 组件中,使用 to 属性来指定要跳转的路由路径。

  2. Route 组件中,使用 path 属性来指定要匹配的路由路径,并使用 component 属性来指定要渲染的组件。

  3. 在菜单项的 li 标签中,可以通过 className 属性来设置选中菜单项的样式。

const Menu1 = () => {
  return <h2>Menu 1</h2>;
};

const Menu2 = () => {
  return <h2>Menu 2</h2>;
};

const Home = () => {
  return <h2>Home</h2>;
};
  1. 在组件中,根据当前路由路径来确定哪个菜单项应该被选中。可以使用 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>
  );
};
  1. 在 CSS 中,可以为选中的菜单项设置样式,例如:
li.active {
  background-color: #f0f0f0;
}

通过以上步骤,当点击菜单项时,页面会根据路由规则进行切换,并且菜单项会根据当前路由路径来确定是否被选中。

antd二级菜单选择后页面切换但是菜单未选中

原文地址: https://www.cveoy.top/t/topic/jd0G 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录