例如,只需将活动类 btw 切换到 li。但不是路由器。我有这样的列表,它不是带有 map() 方法的 cicle。它是静态列表。
constructor(props) {
super(props);
const parsedUrlQuery = window.location.pathname;
this.state = {
isActive: true
}
}
<ul className='bread list-inline'>
<li className={this.state.isActive ? 'navigation--active' : ''}>All projects</li>
<li> My projects</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何为静态列表删除和添加类。你能帮我解决这个问题吗?
你必须以state某种方式改变。按钮单击、输入更改甚至来自某种子组件处理程序。
在此示例中,我onClick在li触发此类状态更改的每个元素中使用:
class App extends React.Component {
constructor() {
super()
this.state = {
activeItem: -1,
items: ['All Projects', 'My Projects'],
}
}
handleItemClick(index) {
this.setState({
activeItem: index,
})
}
render() {
return (
<div>
<ul className='bread list-inline'>
{this.state.items.map((item, index) =>
<li
key={index}
className={this.state.activeItem === index ? 'navigation--active' : ''}
onClick={this.handleItemClick.bind(this, index)}
>
{item}
</li>
)}
</ul>
</div>
)
}
}
ReactDOM.render(
<App />,
document.getElementById('root')
)Run Code Online (Sandbox Code Playgroud)
ul > li {
cursor: pointer;
}
li.navigation--active {
text-decoration: underline;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>Run Code Online (Sandbox Code Playgroud)