i am trying to render some dropdown items in a navbar, it appears only the last item of the navbar is being rendered, the logged data appears to be correct, i even hard coded the data into one of the components, the same error still persists.the rendered Navbar , the logged data.

    //Navbar component
    import React from "react";
    import { Link } from "react-router-dom";
    import Dropdown from "./Dropdown";
    import "./style/navbar.css";

    const Navbar: React.FC = () => {
    const npflDropdownItems = [
    "Home",
    "Fixtures",
    "Results",
    "Tables",
    "Transfer",
    "Stats",
    "Video",
    "Watch Live",
    "Clubs",
    "Players",
    "Awards",
      ];
      const aboutDropdownItems = ["Overview", "What We Do", "Careers", "Partners"];
      const moreDropdownItems = ["Managers", "Referee", "e-NPFL", "Contact Us"];

  console.log(npflDropdownItems, aboutDropdownItems, moreDropdownItems);

  return (
    <nav className="navbar">
      <div className="logo-container">
        <img className="logo" src="path-to-your-logo.png" alt="Logo" />
      </div>
      <div className="navbar-dropdown">
        <div className="navbar-item npfl">
          Npfl
          <Dropdown items={npflDropdownItems} />
        </div>
      </div>
      <div className="navbar-dropdown">
        <div className="navbar-item about">
          About
          <Dropdown items={aboutDropdownItems} />
        </div>
      </div>
      <div className="navbar-dropdown">
        <div className="navbar-item more">
          More
          <Dropdown items={moreDropdownItems} />
        </div>
      </div>
    </nav>
  );
};

export default Navbar;

//Dropdown component
import React from "react";
import { Link } from "react-router-dom";

interface DropdownProps {
  items: string[];
}

const Dropdown: React.FC<DropdownProps> = ({ items }) => {
  return (
    <div className="navbar-dropdown">
      {items.map((item, index) => (
        <div key={index} className="navbar-item-dropdown">
          {item}
        </div>
      ))}
    </div>
  );
};

export default Dropdown;
`

`/* Navbar.css */

.navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background-color: #333;
  padding: 10px;
  color: #fff;
}

.logo-container {
  max-width: 100px;
}

.logo {
  width: 100%;
  height: auto;
}

.navbar-menu {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.navbar-item {

  margin-right: 10px;
  cursor: pointer;
  color: #fff;
  text-decoration: none;
}

.navbar-dropdown {
  position: relative;
  z-index: 2;
}

.navbar-item-dropdown {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  background-color: #333;
  padding: 10px;
  width: 150px;
  z-index: 1;
}

.navbar-dropdown:hover .navbar-item-dropdown {
  display: block;
}

.fantasy,
.more {
  cursor: pointer;
}

@media (max-width: 768px) {
  .navbar-menu {
    flex-direction: row;
    align-items: flex-start;
  }

  .navbar-item,
  .fantasy,
  .more {
    margin: 5px 0;
  }

  .navbar-dropdown .navbar-item {
    width: 100%;
  }
}
`

我希望当点击或悬停时,所有下拉项都会显示出来.

thanks in advance

推荐答案

代码几乎没有什么问题.您没有看到所有导航项目的原因是由于position:absolute,所有列表项都重叠了,所以您只能看到最后一项.

我还看到你的 struct 是这样的:

<div class="navbar-dropdown">
    <div class="navbar-item">
        <div class="navbar-dropdown">
            <div class="navbar-item-dropdown"></div>
        </div>
    </div>
</div>

我稍微更改了类名,使其外层为navbar-dropdownnavbar-dropdown-container,并相应地更改了一些样式.

//Navbar component

  return (
    <nav className="navbar">
      <div className="logo-container">
        <img className="logo" src="path-to-your-logo.png" alt="Logo" />
      </div>
      <div className="navbar-dropdown-container">
        <div className="navbar-item npfl">
          Npfl
          <Dropdown items={npflDropdownItems} />
        </div>
      </div>
      <div className="navbar-dropdown-container">
        <div className="navbar-item about">
          About
          <Dropdown items={aboutDropdownItems} />
        </div>
      </div>
      <div className="navbar-dropdown-container">
        <div className="navbar-item more">
          More
          <Dropdown items={moreDropdownItems} />
        </div>
      </div>
    </nav>
  );
//Navbar.css

//adding some styles to container
.navbar-dropdown-container {
  position: relative;
  top:0;
  z-index: 2;
}

//making navbar-dropdown as display none instead of list items and making its position as absolute
.navbar-dropdown{
  display:none;
  position: absolute;
}

//changing some styles for items
.navbar-item-dropdown {
  /* display: none; */
  /* position: absolute; */
  /* top: 100%; */
  /* left: 0; */
  background-color: #333;
  padding: 10px;
  width: 150px;
  z-index: 1;
}

//changing hover to target container and adding some styles
.navbar-dropdown-container:hover .navbar-dropdown {
  display: flex;
  flex-direction:column;
}



Javascript相关问答推荐

foreach循环中的Typescript字符串索引

如何在表格上拥有水平滚动条,在正文页面上拥有垂直滚动条,同时还对html表格的标题使用位置粘性?

使用续集和下拉栏显示模型属性

格式值未保存在redux持久切片中

使用i18next在React中不重新加载翻译动态数据的问题

react—router v6:路由没有路径

如何从URL获取令牌?

我的角模板订阅后不刷新'

同一类的所有div';S的模式窗口

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

无法避免UV:flat的插值:非法使用保留字"

将范围 Select 器添加到HighChart面积图

用于测试其方法和构造函数的导出/导入类

如何在下一个js中更改每个标记APEXCHARTS图表的 colored颜色

ReferenceError:无法在初始化之前访问setData

如何在每隔2分钟刷新OKTA令牌后停止页面刷新

设置复选框根据选中状态输入选中值

递增/递减按钮React.js/Redux

在对象的嵌套数组中添加两个属性

我想为我的Reaction项目在画布上加载图像/视频,图像正在工作,但视频没有