【发布时间】:2018-06-29 12:20:52
【问题描述】:
这个问题比较简单,并没有专门连接到导航栏,这只是一个很好的例子..
我想通过使用“活动”类来创建带有活动标签突出显示的简单导航栏。目前我有两个组件:NavBar 和 NavItem。在标签点击时,我想让它处于活动状态并确保所有其他人都处于非活动状态。
什么是最简单的解决方案?如何将 NavBar 中的多个 NavItem 重置为默认的非活动状态而不单击一个?
NavBar.js
import React from 'react';
import NavItem from './NavItem';
export default class NavBar extends React.Component {
constructor() {
super();
this.menuItems = [
{ name: 'HOME', url: '#' },
{ name: 'NEWS', url: '#' },
{ name: 'CONTACT', url: '#' }
];
}
render() {
return (
<nav>
<ul>
CHOOSE:
{this.menuItems.map( (item,i) => <NavItem key={i} data={item} /> )}
</ul>
</nav>
);
}
}
NavItem.js
import React from 'react';
export default class NavItem extends React.Component {
constructor() {
super();
this.state = {
active: false
}
}
handleOnClick() {
this.setState({active: !this.state.active});
}
render() {
let item = this.props.data;
return <li><a href={item.url} className={this.state.active ? 'active' : ''} onClick={ (e) => this.handleOnClick(e) }>{item.name}</a></li>;
}
}
【问题讨论】:
-
在 NavBar 组件状态中,您可以保存当前处于活动状态的选项卡,还可以创建处理 NavBar 内的 onClick 的方法并将其作为道具传递给 NavItem。
标签: reactjs