gpt4 book ai didi

css - React 路由器中的 activeClassName 同时突出显示两个 NavLink

转载 作者:技术小花猫 更新时间:2023-10-29 11:48:14 35 4
gpt4 key购买 nike

我正在学习 React Router 并关注 this tutorial除了突出显示事件 NavLink 的问题外,一切都很清楚并按说明工作(感谢作者)。

查看 css 文件并注意 .current 类:

nav ul {
list-style: none;
display: flex;
background-color: black;
margin-bottom: 20px;
}

nav ul li {
padding: 20px;
}

nav ul li a {
color: white;
text-decoration: none;
}

.current {
border-bottom: 4px solid white;
}

当我加载应用程序时,导航中的主页链接会以白色底部边框线突出显示,但即​​使我单击“关于”链接或“联系”链接,它也会保持突出显示。我一步一步地跟着一切,但我无法弄清楚这个问题。

在阅读了关于 NavLink 的 React 文档和许多在线教程之后,仍然不知道如何修复它。

这是我点击关于链接的时候 enter image description here

这是我点击联系链接的时候 enter image description here

这是教程路由示例的方式

<nav>
<ul>
<li><NavLink exact activeClassName="current" to='/'>Home</NavLink></li>
<li><NavLink exact activeClassName="current" to='/about'>About</NavLink></li>
<li><NavLink exact activeClassName="current" to='/contact'>Contact</NavLink></li>
</ul>
</nav>

请注意主页链接如何保持在其下方的事件白线,尽管事实上它不再是事件链接。

添加 activeClassName="current"假设用白色下划线突出显示当前 View ,但主页链接仍然用白色下划线突出显示。

所以,请各位有多年经验的人帮忙。

这是我的 app.js

    import React, { Component } from 'react';
import './App.css';
import Main from './components/main';
import Navigation from './components/navigation';




class App extends Component {
render() {
return (
<div>
<h1> React Router </h1>;
<h5> import 'BrowserRouter' from 'react-router-dom' in Appjs</h5>
<hr></hr>

<Navigation />

<Main />
</div>

);
}
}

export default App;

这是我的 index.js

    import React from 'react';
import ReactDOM from 'react-dom';
//Add browserrouter to use it in your app
import { BrowserRouter } from 'react-router-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';

//this router example is from this site
//https://blog.pusher.com/getting-started-with-react-router-v4/
/*
You can only pass a single child element to a Router,
so it is necessary to create a root component
that renders the rest of your application and
then pass that in as the child of the Router.
*/
ReactDOM.render((
<BrowserRouter>
<App />
</BrowserRouter>
), document.getElementById('root'));

这是我的 main.js

 import React, { Component } from 'react';
import { NavLink, Switch, Route } from 'react-router-dom';
import Home from './home';
import About from './about'
import Contact from './contact'

class Main extends Component {
render() {
return (
<div>
<p> My main component </p>
<Switch>
<Route exact={true} path='/' component={Home}></Route>
<Route path='/about' component={About}></Route>
<Route path='/contact' component={Contact}></Route>
</Switch>
</div>
);
}
}

export default Main;

最后是我的 navigation.js

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

class Navigation extends Component {
render() {
return (
<div>
<p> My Navigation component </p>
<nav>
<ul>
<li><NavLink to='/'> Home </NavLink> </li>
<li><NavLink to='/about'> About </NavLink> </li>
<li><NavLink to='/contact'> Contact </NavLink> </li>
</ul>
</nav>
</div>
);
}
}

export default Navigation;

最佳答案

Navlink 也需要一个精确的...更改为:

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

class Navigation extends Component {
render() {
return (
<div>
<p> My Navigation component </p>
<nav>
<ul>
<li><NavLink to='/' activeClassName="current" exact={true}> Home </NavLink> </li>
<li><NavLink to='/about' activeClassName="current"> About </NavLink> </li>
<li><NavLink to='/contact' activeClassName="current"> Contact </NavLink> </li>
</ul>
</nav>
</div>
);
}
}

export default Navigation;

关于css - React 路由器中的 activeClassName 同时突出显示两个 NavLink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53013334/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com