我想在按下按钮的同时运行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;