我已经使用Reaction-RoutV6创建了一个导航栏.当我们单击任何li元素时,将应用".active"类.现在我设置了"Active"类的样式(如添加BG-COLOR和COLOR),但当我单击Home列表项时,我的徽标也被激活,因为我为徽标图像和Home列表项提供了相同的路径.

enter image description here

import React from "react";
import { NavLink } from "react-router-dom";
import "./Navbars.css";

function Navbars() {
  return (
    <div>
      <div>
        <ul className="navbar">
          <NavLink to="/">
            <img
              src="https://assets.ccbp.in/frontend/react-js/nxt-trendz-logo-img.png"
              alt="logo-image"
              className="logo-img"
            />
          </NavLink>
          <li>
            <NavLink to="/" className="navbar-link">
              Home
            </NavLink>
          </li>
          <li>
            <NavLink to="/carts" className="navbar-link">
              Carts
            </NavLink>
          </li>
          <li>
            <NavLink to="/products" className="navbar-link">
              Products
            </NavLink>
          </li>
          <li>
            <button type="button" className="btn btn-primary m-2">
              Logout
            </button>
          </li>
        </ul>
      </div>
    </div>
  );
}

export default Navbars;

推荐答案

该应用程序正在渲染两个Home "/"路径链接.如果您不希望图像链接接收任何"活动"样式,那么我建议将其呈现为常规的Link组件,这样就不会应用"active"类.

您可能还希望将此链接呈现到列表项li元素中,以在无序列表ul中保持正确的语义HTML.

import { Link, NavLink } from 'react-router-dom';

...

<li>
  <Link to="/">
    <img
      src="https://assets.ccbp.in/frontend/react-js/nxt-trendz-logo-img.png"
      alt="logo-image"
      className="logo-img"
    />
  </Link>
</li>
<li>
  <NavLink to="/" className="navbar-link">
    Home
  </NavLink>
</li>

另一种方法是,因为您的代码呈现的所有"真正的"NavLink个组件也都有一个"navbar-link"类名,所以您可以确定"active"类名的范围.

示例:

.navbar-link {
  ... normal NavLink rules
}

.navbar-link.active {
  ... active link rules
}

Javascript相关问答推荐

禁用从vue.js 2中的循环创建的表的最后td的按钮

RxJS setTimeout操作符等效

React存档iframe点击行为

Google maps API通过API返回ZERO_RESULTS,以获得方向请求,但适用于Google maps

手机上的渲染错误文本必须在文本组件中渲染,但在浏览器上没有问题<><>

Chart.js 4.4.2,当悬停在一个数据点上时,如何在工具提示中拥有多个数据点/标签?

我创建了一个创建对象的函数,我希望从该函数创建的对象具有唯一的键.我怎么能做到这一点?

闭包是将值复制到内存的另一个位置吗?

使用NextJS+MongoDB+Prisma ORM获取无效请求正文,无法发布错误

钛中的onClick事件需要在两次点击之间等待几秒钟

Vaadin定制组件-保持对javascrip变量的访问

如何确保预订系统跨不同时区的日期时间处理一致?

在SHINY R中的嵌套模块中,不能使用Java代码

为什么在函数中添加粒子的速率大于删除粒子的速率?

React Refs不与高阶组件(HOC)中的动态生成组件一起工作

需要RTK-在ReactJS中查询多个组件的Mutations 数据

使用Perl Selify::Remote::Driver执行Java脚本时出错

输入数据覆盖JSON文件

ReactJS Sweep Line:优化SciChartJS性能,重用wasmContext进行多图表渲染

如何在预览中显示html+css与数据URL?