You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么放在Bootstrap 5下拉导航栏中的react-router Link无法正常工作?

问题原因

  • Bootstrap的折叠导航交互依赖其自带的JS逻辑,你仅引入了Bootstrap样式、错误引入了jQuery(Bootstrap 5已经不依赖jQuery,引入jQuery对实现交互没有任何帮助),没有加载Bootstrap对应的交互JS文件,所以点击折叠按钮没有反应。
  • 你嵌套使用<a>标签和<Link>组件属于错误写法,两个都是跳转交互元素,嵌套会导致事件冲突,影响路由跳转逻辑。

解决步骤

1. 修正导航链接的错误写法

直接把Bootstrap的样式类加在<Link>组件上,无需额外嵌套<a>标签,同时可以给品牌栏也加上跳转逻辑。

2. 引入Bootstrap交互逻辑

有两种可选方案,优先推荐方案二,更符合React开发规范:

方案一:引入Bootstrap全量JS

如果是通过npm安装的Bootstrap,直接在项目入口文件index.js顶部引入Bootstrap的打包JS即可:

import 'bootstrap/dist/js/bootstrap.bundle.min.js'

这个文件已经内置了popper依赖,无需额外安装其他包。如果是通过CDN引入Bootstrap,直接在public/index.html的</body>标签前添加Bootstrap 5的JS CDN即可。

方案二:使用React状态控制菜单显隐(无额外依赖)

自己通过React状态管理折叠菜单的显示隐藏,完全不用依赖Bootstrap的原生JS,避免全局JS冲突:

import React, { useState } from "react";
import {Link} from "react-router-dom";

const Navbar = () => {
    // 控制导航菜单是否展开
    const [isNavOpen, setIsNavOpen] = useState(false);
    return (
    <nav className="navbar navbar-expand-lg navbar-light bg-light">
  <div className="container-fluid">
    <Link className="navbar-brand" to="/">Crea tu equipo de superhéroes</Link>
    <button 
      className="navbar-toggler" 
      type="button" 
      onClick={() => setIsNavOpen(!isNavOpen)}
      aria-controls="navbarNav" 
      aria-expanded={isNavOpen} 
      aria-label="Toggle navigation"
    >
      <span className="navbar-toggler-icon"></span>
    </button>
    <div className={`collapse navbar-collapse ${isNavOpen ? 'show' : ''}`} id="navbarNav">
      <ul className="navbar-nav">
        <li className="nav-item">
          <Link className="nav-link active" aria-current="page" to="/">Favoritos</Link>
        </li>
        <li className="nav-item">
          <Link className="nav-link" to="/Search">Búsqueda</Link>
        </li>
      </ul>
    </div>
  </div>
</nav>
    )
}

export default Navbar;

额外提示

你之前引入jQuery的代码可以直接删除,Bootstrap 5已经完全移除了对jQuery的依赖,多余引入反而可能带来未知的事件冲突。

内容的提问来源于stack exchange,提问作者Amadeo de la Peña

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:45:05