Reactjs 无法将类赋予react中的当前链接
我在导航菜单中有一些链接,可以输出html,如下所示:Reactjs 无法将类赋予react中的当前链接,reactjs,Reactjs,我在导航菜单中有一些链接,可以输出html,如下所示: <ul> <li> <a href="/">Home</a> </li> <li> <a href="/subs">Subs</a> </li> </ul> 以下是组件: import React, {Component} from "react"; impor
<ul>
<li>
<a href="/">Home</a>
</li>
<li>
<a href="/subs">Subs</a>
</li>
</ul>
以下是组件:
import React, {Component} from "react";
import {Link} from "react-router-dom";
import {navLinks} from "../util/nav-links";
export default class NavMenu extends React.Component {
render() {
var isActive = this.context.router.route.location.pathname === this.props.to;
var className = isActive ? 'active' : '';
const lis = navLinks.map(link => (
<li>
<Link className={className} to={link.href} key={link.href}>{link.name}</Link>
</li>
)
)
return (
<div id="navbar">
<ul>
{lis}
</ul>
</div>
)
}
}
为什么会发生这种错误?如果删除了两个变量isActive和className以及link标记中的className,则代码可以工作。另外,如果有更好的方法来实现这一点,那么还有其他方法吗
谢谢你的帮助。Stackblitz演示:您提供的链接中的2个选项适用于您: 选项1马特的回答: React路由器V4附带了一个现成的组件 要使用,只需将activeClassName属性设置为已适当设置样式的类,或直接将activeStyle设置为所需的样式。有关更多详细信息,请参阅 你好 选项2幽灵克拉维斯的回答: 导出默认类Navbar扩展React.Component{ 渲染{ const{location}=this.props; const homeClass=location.pathname==/?活动:; const aboutClass=location.pathname.match/^\/about/?active:; const contactClass=location.pathname.match/^\/contact/?active:; 回来 家 关于 联系 }不要使用Link组件,而是使用react路由器dom中的NavLink组件。NavLink组件采用名为activeClassName的道具,其值为将用于样式设置的类,以指示哪个导航链接处于活动状态
<NavLink activeClassName="active" to={link.href} exact>{link.name}</NavLink>
还请注意,使用NavLink组件将不再需要NavMenu组件中的以下两条语句
var isActive = this.context.router.route.location.pathname === this.props.to;
var className = isActive ? 'active' : '';
您可以将代码修改为接受而不是链接,并且可以删除在render方法中生成活动类的所有相关代码 更改如下:
import {Link} from "react-router-dom";
致:
那么
分岔闪电战:
对我来说,有效的方法是使用NavLink,因为它有这个活动类属性
<NavLink to="/" activeClassName="active">
Home
</NavLink>
<NavLink to="/store" activeClassName="active">
Store
</NavLink>
<NavLink to="/about" activeClassName="active">
About Us
</NavLink>
首先导入它
import { NavLink } from 'react-router-dom';
使用activeClassName获取活动类属性
<NavLink to="/" activeClassName="active">
Home
</NavLink>
<NavLink to="/store" activeClassName="active">
Store
</NavLink>
<NavLink to="/about" activeClassName="active">
About Us
</NavLink>
import { NavLink } from 'react-router-dom';
<Link className={className} to={link.href} key={link.href}>{link.name}</Link>
<NavLink exact activeClassName="active" to={link.href} key={link.href}>{link.name}</NavLink>
import React, {Component} from "react";
import { NavLink } from 'react-router-dom';
import {navLinks} from "../util/nav-links";
export default class NavMenu extends React.Component {
render() {
const lis = navLinks.map(link => (
<li>
<NavLink exact activeClassName="active" to={link.href} key={link.href}>{link.name}</NavLink>
</li>
)
)
return (
<div id="navbar">
<ul>
{lis}
</ul>
</div>
)
}
}
.
.
.
.active {
color: #13aa52 !important;
}
import { NavLink } from 'react-router-dom';
<NavLink to="/" activeClassName="active">
Home
</NavLink>
<NavLink to="/store" activeClassName="active">
Store
</NavLink>
<NavLink to="/about" activeClassName="active">
About Us
</NavLink>
.active{
color:#fcfcfc;
}