reactjs - 如何使用其边界检测 React 中底层元素的 onMouseOver
问题描述
无法在检测到的onMouseOver
a 下面的元素上<canvas />
检测到事件onMouseMove
。
我有<canvas />
一个取决于onMouseMove
事件的粒子模拟。我也有一个<div />
位于<canvas />
. 我需要onMouseOver
在其边界内检测到它。我目前onMouseOver
从包装的包装器<div />
中传递了<canvas />
,<div />
但它导致每当鼠标悬停在包装器上时就会被触发handleMouseOver()
。<div />
结构
<Wrapper>
<canvas width="100%" height="100%" z-index="2" />
<div width="20px" height="20px" z-index="1" />
</Wrapper>
现场示例: https ://codesandbox.io/s/underneath-event-demo-4uzm0
我的任务是捕获位于捕获所有事件并且也需要捕获事件的下方的onMouseOver
for the 。不是解决方案,因为我也需要我来捕捉事件。更改导致其中一个元素不可用于事件捕获。<div />
<canvas />
onMouseMove
pointer-events: none
<canvas />
z-index
解决方案
你可以这样做
手柄画布鼠标移动
const handleCanvasMouseMove = e => {
console.log("Canvas move event");
console.log("Canvas value X", e.clientX);
console.log("Canvas value Y", e.clientY);
};
像这样打电话
<Canvas onMouseMove={e => handleCanvasMouseMove(e)} />
推荐阅读
- javascript - ajax 块在 codeigniter 中似乎不起作用
- javascript - 在foreach,javascript中删除除当前键之外的所有键
- redis - RedissonClient.getSet("my-set").size() 返回一个数字后,为什么直到下一次运行该集合才显示为空?
- javascript - Javascript:检索用户选择的下拉值
- windows - 从 Git Bash (MINGW64) 运行 MSVC 'cl.exe'
- ios - 我无法构建 iOS 项目
- azure-functions - Azure 逻辑应用 FTP 并发触发器
- java - 无法对非静态字段方法第 17 行和第 9 行进行静态引用
- reactjs - React-Boostrap - 在底部修复行
- python - 基于 __hash__ 设置更改隐式顺序?