以下是使用React.js代码渲染带有两个链接('about'和'project')的导航栏。页面加载时,“about”链接处于活动状态并呈红色。当单击其他链接时,导航栏的状态设置为“project”,“about”链接样式被还原,并将“project”颜色设置为红色。
我通过将点击处理程序附加到两个链接标记,并将活动状态设置为事件目标innerHTML的名称来实现这一点。
我是React的新手,我觉得这是一种非常冗长的方法。我知道可以将activeClassName属性传递给react-router链接,但我想找到一种不使用它的方法。
我通过将点击处理程序附加到两个链接标记,并将活动状态设置为事件目标innerHTML的名称来实现这一点。
我是React的新手,我觉得这是一种非常冗长的方法。我知道可以将activeClassName属性传递给react-router链接,但我想找到一种不使用它的方法。
import React, { Component } from 'react'
import { Link, Route } from 'react-router'
export default class Navbar extends Component {
constructor() {
super();
this.state = {
active: 'about'
}
this._handleClick = this._handleClick.bind(this);
}
_handleClick(e) {
this.setState({
active: e.target.innerHTML
});
}
render() {
let aboutStyle;
let projectStyle;
if (this.state.active === 'about') {
aboutStyle = { color: '#ff3333' };
projectStyle = {};
} else {
aboutStyle = {};
projectStyle = { color: '#ff3333' };
}
return (
<div className='navbar'>
<Link to='/'><h2>BK //</h2></Link>
<div className='menu'>
<Link style={aboutStyle} onClick={this._handleClick} to='about'>about</Link>
<Link style={projectStyle} onClick={this._handleClick} to='projects'>projects</Link>
</div>
</div>
)
}
}
exact
是用于深度路由,例如:path/subpath
以将它们分开为path
、path/subpath
等。 - Yury Shapkarin