React Router NavLink和activeClassName的问题

时间:2019-11-03 16:45:07

标签: css reactjs react-router

我的第一个问题是,菜单中有三个链接。主页,关于和添加食物。 NavLink activeClassName可以按预期工作,但除此之外:即使我移至其他链接,主页也始终保持活动状态。 在屏幕截图中,我已移至/ about页面,但Home * li保持活动状态。 enter image description here

其次,由于某些原因,边界半径不适用于这些项目。是因为它们有大量填充物吗?

我的代码:

   import React from "react";
import { NavLink } from "react-router-dom";
const Navbar = (props) => {
  return (
    <nav>
      <ul>
        <NavLink to="/" activeClassName="active-navlink">
          <li>Home</li>
        </NavLink>
        <NavLink to="/about" activeClassName="active-navlink">
          <li>About</li>
        </NavLink>
        <NavLink to="/add-food" activeClassName="active-navlink">
          <li>Add Food</li>
        </NavLink>{" "}
      </ul>
    </nav>
  );
};

export default Navbar;

和我的路由器,其中处理了所有链接:

<Router>
      {" "}
      <div className="App">
        <Navbar></Navbar>
        <Switch>
          <Route path="/about" component={About}></Route>
          <Route
            path="/products/:food"
            render={(props) => (
              <IndividualProduct {...props}></IndividualProduct>
            )}
          ></Route>
          <Route
            path="/"
            exact
            render={(props) => (
              <Home
                {...props}
                groceryList={groceryList}
                orderTotal={orderTotal}
                setOrderTotal={setOrderTotal}
                productsInCart={productsInCart}
                updateProductsInCart={updateProductsInCart}
              ></Home>
            )}
          ></Route>
          <Route component={NotFound}></Route>
        </Switch>
      </div>
    </Router>

1 个答案:

答案 0 :(得分:2)

1。 将精确值添加到“ /”的Navlink中:

  <NavLink to="/" activeClassName="active-navlink" exact={true}  >
        <li>Home</li>
  </NavLink>
  1. 样式示例:

https://codepen.io/k3no/pen/OXgXOb