reactjs - 尝试使用 React 在我的导航上的图标和文本之间切换
问题描述
我有一些代码,它可以工作,但我的问题是,当我只滚动一个图标时,它会同时更改所有图标。我只想要我悬停在上面的图标来改变,所以任何帮助都将不胜感激。
export default class Home extends Component {
constructor(props) {
super(props);
this.state = {isHovered: false};
this.toggleHover = this.toggleHover.bind(this);
}
toggleHover() {
this.setState(prevState => ({isHovered: !prevState.isHovered}));
}
render() {
return (
<section className="info-section">
<div className="logo">
MATT
</div>
<div className="info-box">
<ul className="nav-links">
<li onMouseEnter={this.toggleHover} onMouseLeave={this.toggleHover}>
{this.state.isHovered
? <a className="home active" href="/">Home</a>
: <a className="home active" href="/"><FontAwesomeIcon icon={faHome} /></a>
}
</li>
<li onMouseEnter={this.toggleHover} onMouseLeave={this.toggleHover}>
{this.state.isHovered
? <a href="/about">About</a>
: <a href="/about"><FontAwesomeIcon icon={faUser} /></a>
}
</li>
解决方案
也许你可以尝试使用 CSS。
<ul className="nav-links">
<li>
<a href="/">
<span>Home</span>
<FontAwesomeIcon icon={faHome} />
</a>
</li>
<li>
<a href="/about">
<span>Home</span>
<FontAwesomeIcon icon={faUser} />
</a>
</li>
...
a {
span {
display: none;
}
&:hover {
span {
display: block;
}
/* hide the icon base on their html tag or class */
i {
display: none;
}
}
}
如果你真的想通过 Javascript 来处理这个问题(我不建议这样做),你可以试试这个。
class App extends Component {
state = {
hover: ""
};
handleMouseEnter = key => {
this.setState({ hover: key });
};
handleMouseLeave = () => {
this.setState({ hover: "" });
};
render() {
const { hover } = this.state;
return (
<ul>
<li
onMouseEnter={() => this.handleMouseEnter("home")}
onMouseLeave={this.handleMouseLeave}
>
<a href="/">
{hover === "home" ? <span>Hover Home</span> : <span>Home</span>}
</a>
</li>
<li
onMouseEnter={() => this.handleMouseEnter("about")}
onMouseLeave={this.handleMouseLeave}
>
<a href="/about">
{hover === "about" ? <span>Hover about</span> : <span>about</span>}
</a>
</li>
</ul>
);
}
}
推荐阅读
- android - Firestore:检查虚拟文档是否存在
- r - 如果变量已经是整数,为什么 R 返回我的变量必须是整数的错误?
- node.js - axios 和 Azure Application Insights 的问题
- javascript - 通过对象键循环的函数抛出未定义
- mysql - 结果集结束后的 Java Sql 异常
- sql - 使用 if 条件时执行选择查询时出错
- testing - 如何测试依赖于其他小部件通过提供程序设置的数据的小部件?
- python-3.x - 内置打印(stdout)的异步版本
- sql-server - Sql Server:定义要考虑的行
- cobol - COBOL 记录描述条目我无法破译