javascript - 如何检测鼠标何时停止在 React 中移动?

标签 javascript reactjs mouseevent

我正在尝试根据鼠标移动动态切换按钮元素的可见性(即,当鼠标移动时,{visibility: visibility}{visibility: hidden} 当它停止移动时)。该按钮与 onMouseMove 一起显示,但我正在为第二部分的开始而苦苦挣扎。由于 React 没有 onMouseStop 事件,实现此目的的最佳方法是什么?

export default class Infographic extends Component {
  constructor(props){
    super(props);

    this.state = {
      mouseMoving: false,
    };

    this.setMouseMove = this.setMouseMove.bind(this);
  }

  setMouseMove(e) {
    e.preventDefault();
    this.setState({mouseMoving: true});
  }

  render() {

    const scrollButtonStyle = {
      visibility: this.state.mouseMoving ? 'visible': 'hidden', 
     };

     return (
       <div onMouseMove={e => this.setMouseMove(e)}>
         <button style={scrollButtonStyle}>Back to top</button>
         <h1>Lorem Ipsum</h1>
       </div>  
     );
  }
}

更新

根据下面的建议,我将以下 IIFE block 添加到 setMouseMove 方法(使用箭头函数进行范围访问)并且它按预期工作。感谢您的帮助!

setMouseMove(e) {
  e.preventDefault();
  this.setState({mouseMoving: true});

  let timeout;
  (() => {
    clearTimeout(timeout);
    timeout = setTimeout(() => this.setState({mouseMoving:false}), 50);
  })();
}

最佳答案

有一个超时函数,设置多少毫秒的不活动被视为“不动”。

let timeout;
let whenMouseMoves = () => {
  clearTimeout(timeout);
  timeout = setTimeout(toggleButton(), 50);
}

然后调整您认为适合您按钮的功能。显然,如果您使用此代码,则需要创建 toggleButton() 函数。

关于javascript - 如何检测鼠标何时停止在 React 中移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53860026/

相关文章:

javascript - 根据服务器的响应动态更改 href 地址

python - 如何将cookie从flask设置为reactjs

release - 区分鼠标按下和鼠标按住

javascript - 用于取消选中和选中复选框的 JQuery 干代码

javascript - 如何编写正则表达式来匹配我的字符串

javascript - 使用 Axios 和最终形式 promise 从捕获中返回

javascript - 在响应函数中调用await

javascript - three.js:找到网格到鼠标光标的最近点

actionscript-3 - Event.MOUSE_LEAVE 在 AS3 中不起作用

javascript - 浏览器中在哪里定义了 keys() 函数?