React 中如何正确监听双击事件?
我在 React 组件里想给一个 div 加双击事件,但 onDoubleClick 好像没反应,是我写错了吗?
试过直接绑定 onDoubleClick,也试过用 useRef 手动 addEventListener,但都不触发。点击倒是正常的。
function MyComponent() {
const handleDoubleClick = () => {
console.log('双击了!');
};
return (
<div
style={{ width: '200px', height: '200px', background: '#eee' }}
onDoubleClick={handleDoubleClick}
>
点我试试双击
</div>
);
}
onDoubleClick在 React 里是原生支持的。问题很可能是双击时触发了文本选中,浏览器默认行为把事件吞了。解决方法很简单,加上 CSS 属性阻止选中文本:
);
}
如果你的 div 里有文字内容,双击时很容易就触发选中文本了,这会阻止双击事件正常触发。加上
userSelect: 'none'就能解决。还有个注意点:双击事件会先触发两次单击事件(
onClick),如果你的单击事件有重要逻辑要注意区分。不过从你的描述看,单击正常双击不触发,基本就是选中文本的问题。