javascript - 当我悬停另一个元素(ReactJS)时如何更改一个元素的样式?

标签 javascript html css reactjs

所以基本上,当我将鼠标悬停在 h1 的“驱动器”选项上时,我希望出现一个包含其他几个详细选项的 div 容器。然后,如果我单击另一个 h1 的“乘车”选项,我也希望出现一个包含更多详细信息和选项的 div。一次只能选择一个,骑行/驾驶,但如果我将鼠标悬停在骑行上,则出现的 div 需要保留,直到鼠标离开 div,如果我将鼠标悬停在驱动器上,则需要出现驱动 div .希望你们能帮忙!这是我的代码

import React, { Component } from 'react';
import './App.css';

class Header extends Component {
  render() {
    return (
      <div className="Nav">
        <header className="Nav-header">
          <h1 className="Nav-title">Halcon</h1>
          <p className="Nav-drive"><a href="*" className="Nav-link" onMouseEnter={this.mouseOver.bind(this)} onMouseLeave={this.mouseOut.bind(this)}>Drive</a></p>
          <p className="Nav-seperator">|</p>
          <p className="Nav-ride"><a href="*" className="Nav-link">Ride</a></p>
        </header>
         // Div i want to appear if Drive is hovered
        <div className="Drive-toggle">
          <h3>Why drive with us?</h3>
          <h3>Safety</h3>
          <h3>Requirements to Drive</h3>
          <h3>Driver App</h3>
          <h3>Driver - Log In</h3>
        </div>
        // Div i want to appear if Ride is hovered
        <div className="Ride-toggle">
          <h3>Why drive with us?</h3>
          <h3>Safety</h3>
          <h3>Requirements to Drive</h3>
          <h3>Driver App</h3>
          <h3>Driver - Log In</h3>
        </div>

      </div>
    );
  }
}

export default Header;

最佳答案

您可以使用state 来存储hovered 的 bool 值,并使用onMouseEnteronMouseLeave更新状态

然后你可以渲染一个样式,一个CSS类或者一个组件conditionally .

这是一个小的运行示例:

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      hovered: false
    };
  }

  onMouseEnter = e => {
    this.setState({ hovered: true });
  };

  onMouseLeave = e => {
    this.setState({ hovered: false });
  };

  render() {
    const { hovered } = this.state;
    const style = hovered ? { backgroundColor: "#333", color: "#fff" } : {};
    return (
      <div>
        <div onMouseEnter={this.onMouseEnter} onMouseLeave={this.onMouseLeave}>
          Hover over me!
        </div>
        <hr />
        <div style={style}>Was it hovered?</div>
        <hr />
        {hovered && <div>Yes!!</div>}
      </div>
    );
  }
}

ReactDOM.render(<App />, document.getElementById("root"));
<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>

关于javascript - 当我悬停另一个元素(ReactJS)时如何更改一个元素的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48047940/

相关文章:

css - Div 不出现在主 div 上,div 宽度不起作用

html - 响应图像在手机上切断

javascript - 单击旁边的表格单元格时选中表格中的复选框

javascript - Sequelize不返回模型实例

javascript - 正则表达式:在一个第一次出现和另一个最后一次出现之间获取

javascript - 第 3 方 API 服务 - Web 安全和 AJAX

html img 标签不起作用,因为生成了错误的路径 Rails 4

html - 自动设置高度而不是在 Bootstrap Modal 中显示滚动条

html - 包装表格中单元格的内容

html - 居中我的菜单的文本