kzr*_*sal 3 html javascript css css3 reactjs
在这段代码中
<div class='wrapper'>
<div class='icon'>
<i className="fa fa-fw fa-globe" style={{ fontSize: '1.75em' }} />
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
每当用户将鼠标悬停在'icon'div上时,此代码
<i className="fa fa-fw fa-globe" style={{ fontSize: '1.75em' }} />
Run Code Online (Sandbox Code Playgroud)
应该用这个替换
<p> Lorem ipsum </p>
Run Code Online (Sandbox Code Playgroud)
我能够实现更改样式但不知道如何替换元素.请帮帮我.
Chr*_*ris 10
与React中的大多数事情一样,您需要一个州.就像是:
constructor() {
super();
this.state = {isHovered: false};
}
Run Code Online (Sandbox Code Playgroud)
当用户将鼠标悬停在图标中或从图标中移出时,此状态需要更改:
toggleHover() {
this.setState(prevState => ({isHovered: !prevState.isHovered}));
}
Run Code Online (Sandbox Code Playgroud)
<div className='icon' onMouseEnter={this.toggleHover} onMouseLeave={this.toggleHover}>
Run Code Online (Sandbox Code Playgroud)
然后根据该状态决定应该显示什么的逻辑:
{this.state.isHovered ?
<p> Lorem ipsum </p> :
<i className="fa fa-fw fa-globe" style={{ fontSize: '1.75em' }} />
}
Run Code Online (Sandbox Code Playgroud)
您可能希望有两个单独的方法,一个用于onMouseEnter,一个用于onMouseLeave,而不仅仅是两者的共享方法,就像我一样.
哦,你有一个错字:你写的class而不是className在几个地方.
class App extends React.Component {
constructor() {
super();
this.state = {isHovered: false};
this.toggleHover = this.toggleHover.bind(this);
}
toggleHover() {
this.setState(prevState => ({isHovered: !prevState.isHovered}));
}
render() {
return (
<div className='wrapper'>
<div className='icon' onMouseEnter={this.toggleHover} onMouseLeave={this.toggleHover}>
{this.state.isHovered ?
<p> Lorem ipsum </p> :
<i className="fa fa-fw fa-globe" style={{ fontSize: '1.75em' }} />
}
</div>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById("app"));Run Code Online (Sandbox Code Playgroud)
.icon i {
display: block;
width: 32px;
height: 32px;
background: url('https://via.placeholder.com/32x32');
}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="app"></div>Run Code Online (Sandbox Code Playgroud)