反应挂钩按下按钮

时间:2020-06-12 10:57:05

标签: react-hooks

我想在按下按钮的同时运行isPressing()。 到目前为止,一切正常。

问题是当我有mouseup并运行isPressed()

我想跳过{time}功能。

在哪里可以使用clearTimeOut()?

而且,我的代码有效吗?

如果我的代码效率不高,请给我一些建议。

  const isPressing = (e) =>{ 
    const time = setTimeout(()=>{
      setMouseDown(true);
    },2000);

   if(e.type==="mouseup"){
      clearTimeout(time);
   }
   else{ 
      switch(e.target.name){
        case "plus":
          setSign(1);
          break;

        case "minus":
          setSign(-1);
          break;

        default:
          throw new Error("It works on my machine");
      }
    }
  }

  const isPressed = () =>{
    if(!mouseDown) setNumber(number+1);
    setMouseDown(false);
  }

  useEffect(()=>{
    if(mouseDown){
        const fastCount = setInterval(()=>{setNumber(number+sign)},100);
        return () => clearInterval(fastCount);
    }
  })

  return (  
    <>
        <div>{number}</div>
        <button name="plus" onMouseDown={isPressing} onMouseUp={isPressed}>+</button>
        <button name="minus" onMouseDown={isPressing} onMouseUp={isPressed}>-</button>
    </>
    );
}

export default Counter;

0 个答案:

没有答案