React开发(196):鼠标和指针事件

Posted 前端小歌谣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React开发(196):鼠标和指针事件相关的知识,希望对你有一定的参考价值。

class BlurExample extends React.Component {
  constructor(props) {
    super(props);

    this.state = { isOpen: false };
    this.timeOutId = null;

    this.onClickHandler = this.onClickHandler.bind(this);
    this.onBlurHandler = this.onBlurHandler.bind(this);
    this.onFocusHandler = this.onFocusHandler.bind(this);
  }

  onClickHandler() {
    this.setState(currentState => ({
      isOpen: !currentState.isOpen
    }));
  }

  // 我们在下一个时间点使用 setTimeout 关闭弹窗。 
 // 这是必要的,因为失去焦点事件会在新的焦点事件前被触发,  
// 我们需要通过这个步骤确认这个元素的一个子节点  // 是否得到了焦点。
  onBlurHandler() {    this.timeOutId = setTimeout(() => {     
 this.setState({        isOpen: false      });    });  }
  // 如果一个子节点获得了焦点,不要关闭弹窗。 
 onFocusHandler() {    clearTimeout(this.timeOutId);  }
  render() {
    // React 通过把失去焦点和获得焦点事件传输给父节点   
 // 来帮助我们。    return (
      <div onBlur={this.onBlurHandler}          
 onFocus={this.onFocusHandler}>       
 <button onClick={this.onClickHandler}
                aria-haspopup="true"
                aria-expanded={this.state.isOpen}>
          Select an option
        </button>
        {this.state.isOpen && (
          <ul>
            <li>Option 1</li>
            <li>Option 2</li>
            <li>Option 3</li>
          </ul>
        )}
      </div>
    );
  }
}

 

以上是关于React开发(196):鼠标和指针事件的主要内容,如果未能解决你的问题,请参考以下文章

JavaFX窗口拖动

Reactreact概述组件事件

鼠标悬停在线系列上的事件和光标指针

VB6/VBA中跟踪鼠标移出窗体控件事件(类模块成员函数指针CHooker类应用)

用鼠标点击两次反应 react-tap-event-plugin 触发事件

jquery鼠标点击事件是啥?