我正在使用onMouseDown并onMouseUp进行更好的控制。我已经有了onContextMenu,但是如何防止单击右键,onMouseDown并且onMouseUp只希望单击左键。
因为目前有 2 个事件同时触发。我的上下文菜单和其他功能同时打开。
我正在使用onMouseDown并onMouseUp进行更好的控制。我已经有了onContextMenu,但是如何防止单击右键,onMouseDown并且onMouseUp只希望单击左键。
因为目前有 2 个事件同时触发。我的上下文菜单和其他功能同时打开。
您可以检查是否e.button === 2。当您右键单击时,e.button值为2。
虽然我不确定它是否支持浏览器。
你可以检查这个例子。
const {useState} = React;
const App = () => {
const [value, setValue] = useState('left or right click');
const handleMouseDown = (e) => {
if(e.button === 2) return;
console.log('handleMouseDown');
}
const handleMouseUp = (e) => {
if(e.button === 2) return;
console.log('handleMouseUp');
}
const handleContextMenu = (e) => {
console.log('handleContextMenu');
}
return (
<div className="test" onMouseDown={handleMouseDown} onMouseUp={handleMouseUp} onContextMenu={handleContextMenu} >{value}</div>
);
};
// Render it
ReactDOM.render(
<App/>,
document.getElementById("react")
);
.test {
width: 100vw;
height: 100vh;
text-align: center;
font-size: 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
<div id="react"></div>
onMouseDown={(event) => {
if (event.button === 0) { ***write some code***}
}}
event.button === 0 left, event.button === 1 middle, event.button === 2 right,