gpt4 book ai didi

javascript - React.js 实现菜单 [突出显示事件链接]

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:21:40 24 4
gpt4 key购买 nike

以下 React.js 代码呈现一个导航栏,其中包含两个名为“about”和“project”的链接。在页面加载时,“关于”链接处于事件状态并显示为红色。单击另一个链接时,导航栏的状态设置为“项目”,“关于”链接样式设置为原状,“项目”为红色。

我通过将点击处理程序附加到两个链接标记并将事件状态设置为 event.target.innerHTML 的名称来实现这一点。

我是新手,我觉得这是一种非常冗长的处理方式。我知道有一个 activeClassName Prop 可以传递给 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 &#47;&#47;</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>
)
}
}

最佳答案

现在您可以使用 react-router-dom 中的 NavLink。此对象支持 activeClassNameactiveStyleisActive(对于函数)等属性。

import { NavLink } from 'react-router-dom';

<NavLink to='about' activeClassName="active">about</NavLink>

// Or specifing active style
<NavLink to='about' activeStyle={{color: "red"}}>about</NavLink>

// If you use deep routes and you need an exact match
<NavLink exact to='about/subpath' activeClassName="active">about</NavLink>

有关更多选项,请阅读文档:https://reacttraining.com/react-router/web/api/NavLink

关于javascript - React.js 实现菜单 [突出显示事件链接],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42297728/

24 4 0