当前位置: 首页 > 知识库问答 >
问题:

NavLink不添加activeClassName(react-router-dom v5.2.0)

令狐声
2023-03-14

我对导航链接有一个小问题。它不应用活动的类名,尽管它在其他方面可以工作(转到所需的路径,呈现所需的组件)

react路由器dom版本5.2.0

我的index.js

import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter } from 'react-router-dom';
import './index.css';
import App from './components/App';

ReactDOM.render(
  <React.StrictMode>
    <BrowserRouter> 
      <App />
    </BrowserRouter>
  </React.StrictMode>,
  document.getElementById('root')
); 

和my Navigation.js:

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

function Navigation() {
  return (
    <nav className="navigation">
      <ul className="navigation__list">
        <li>
          <NavLink to="/" activeClassName="navigation__item_active" className="navigation__item">
            Home
          </NavLink>
        </li>
        <li>
          <NavLink to="/frontend" className="navigation__item" activeClassName="navigation__item_active">
            frontend
          </NavLink>  
        </li> 
        <li>
          <NavLink to="/about" className="navigation__item" activeClassName="navigation__item_active">
            about
          </NavLink>
        </li>
      </ul>
    </nav>
  );
}

export default Navigation; 

UPD:路由器工作,在NaVLink的麻烦。我需要添加activeClassName到nav项目,但它没有。

我的App.js:

import React from 'react';
import Header from './Header';
import Footer from './Footer';
import Main from './Main';

function App() {
  return (
    <div className="App">
      <Header/>
      <Main/>
      <Footer/>
    </div>
  );
}

export default App; 

Main.js:

import React from 'react';
import { Route } from 'react-router-dom';
import HelloPage from './Hello-page';
import About from './About';
import Frontend from './Frontend';
import Navigation from './Navigation';

function Main() {
  return (
    <main className="main">
      <Route exact path="/">
        <HelloPage/>
      </Route>
      <Route path="/about">
        <About/>
      </Route>
      <Route path="/frontend">
        <Frontend/>
      </Route>
      <Navigation/>
    </main>
  );
}

export default Main; 

共有3个答案

牧璞
2023-03-14

正如在我的案例中提到的,解决方案是在webpack中替换

resolve: {
    modules: [
      path.resolve('./src'),
-     path.resolve('./node_modules'),
+    'node_modules',
    ],
  },
贺君浩
2023-03-14

它应该已经工作了~

顺便说一句,即使你应用了那些activeClassName。您仍然需要将App.js中的代码调整为如下内容:-

>

  • 只需为主页或/路线添加重定向。如果不是,则activeClassName将始终应用于home或/路由

    App.js:-

    export default function App() {
      return (
        <Router>
          <Nav />
          <Switch>
            {/* Add this Redirect */}
            <Redirect exact from="/" to="/home" />
            <Route path="/home" component={() => "Home page"} />
            <Route path="/demo" component={() => "Demo page"} />
            <Route path="/demo2" component={() => "Demo2 page"} />
          </Switch>
        </Router>
      );
    }
    

    你可以看到这个工作沙盒尝试删除重定向,看看它是如何变化的

  • 笪昌翰
    2023-03-14

    它由一个命令修复...(我活了10个小时)

    npm i到的路径-regexp@1.7.0-S

     类似资料:
    • 嘿,伙计们,我正在使用react-router-dom Navlink从一个页面导航到另一个页面。这里我有两个关于路由的页面 /仪表板/学校 2./仪表板/民用服务 所以假设我在 /dashboard/school,然后我使用NavLink导航到 /dashboard/civil-services 路由发生更改,但数据未被重新提取,刷新页面后,数据将正确显示 路由组件的定义方式如下: 在该组件中,

    • 我使用React-Router 1.0.0-rc3和Redux-Router 1.0.0-beta3。 在这种情况下,我们如何使用?

    • 我想在我的< code >上添加属性 似乎路线路径确实与问号混淆了。如果我把它换成其他东西,比如一个符号戳,它就会“起作用”。然而,这不是我想要的格式。我想要常规的<代码> 我找不到关于如何使这样的东西工作的文档。我看到了一些关于url的部分的东西,但我不太理解它。 谢谢你的所有帮助

    • 问题内容: 我是ReactJS世界的新手,并且想知道如何将活动的类名传递给元素而不是元素。 现在,我有这种代码。单击时,锚类会更改。 但我想得到类似的东西: 提前致谢 问题答案: 您需要将其封装为路由器感知组件: 用法: 我从react-router-bootstrap模块https://github.com/react-bootstrap/react-router- bootstrap/blob

    • 本文向大家介绍React-Router 3和React-Router 4有什么变化?添加了什么好的特性?相关面试题,主要包含被问及React-Router 3和React-Router 4有什么变化?添加了什么好的特性?时的应答技巧和注意事项,需要的朋友参考一下 React-Router 4 从设计思想上进行改变,引入动态路由,将路由进行了拆分,将其放到了各自的模块中,不再有单独的 router

    • React Router 一个用于 React.js 的路由解决方案(routing solution)。它轻松可以同步你的 app 和 URL,同时给嵌套,转换,和服务端渲染一流的支持。 特性: 嵌套视图映射到嵌套路由 模块化构建路由层级 同步和异步转移挂钩 转换中止/重定向/重试 动态 segments 查询参数 当 .active 类的路由活动时可以自动链接 Multiple root r