const moveTouch = useCallback((event: TouchEvent) => {
event.preventDefault();
event.stopPropagation();
if (!canvasRef.current) {
return;
}
const canvas: HTMLCanvasElement = canvasRef.current;
let touch = event.touches[0];
let mouseEvent = new MouseEvent("mousemove", {
clientX: touch?.clientX,
clientY: touch?.clientY,
});
canvas.dispatchEvent(mouseEvent);
}, []);
터치 그림판 구현을 위하여 터치 이벤트를 마우스이벤트로 dispatch 해주는 함수를 만들어 리액트의 onTouchMove에 넣어주었는데,
모바일 뷰에서 터치로 그림을 그릴 수 없는 문제가 발생함
touch 이벤트를 mouse 이벤트로 dispatch 해주는 과정에서 react의 이벤트 핸들러인 onMouseDown, onMouseMove 등으로는 event dispatch가 어려운 것으로 판단
터치이벤트마다 마우스이벤트와 같은 로직을 만들어줄 것인지, 아니면 위와같은 방식으로 dispatch해줄 것인지 고민하게 됨.
전자가 더 비효율적인 것 같다고 판단.