【发布时间】:2020-12-03 12:05:55
【问题描述】:
情况是这样的,
const MyComp = () => {
const timelineOverlayRef = useRef(null);
const [position, setPosition] = useState({ x: 0, y: 0 });
const mouseDownHandler = e => {
setPosition({ x: 0, y: 100});
};
const mouseMoveHandler = e => {
console.log(position);
}
const init = () => {
timelineOverlayRef.current.addEventListener('mousemove', mouseMoveHandler);
timelineOverlayRef.current.addEventListener('mousedown', mouseDownHandler);
}
useEffect(init, []);
return <div ref={timelineOverlayRef}>My Div where I want to capture mouse down and mouse move events</div>;
}
当我单击我的 div 并开始移动鼠标时,我看不到 y 等于 100 的更新位置。相反,我有 y = 0 的初始状态值。知道为什么会发生这种情况以及如何克服这将不胜感激。
【问题讨论】:
-
你确定 mouseDownHandler 和 mouseMoveHandler 被调用了吗?
-
是的,我在进入事件处理程序后做了控制台日志。他们的记录很好。
-
mousemove 在 mousedown 之前执行。
标签: javascript reactjs event-handling lexical-scope