addEventListenerのlistenerに渡す関数の引数の型が一致しないためエラーになる

そのコードに於いて、document.addEventListener の第二引数に指定したハンドラで期待されているのは、React.MouseEventではなく、ネイティブのMouseEventです。

質問のコードでは、冒頭で

import React, { MouseEvent } from 'react';

としているので、10行目の

const handleMouseMove = (e: MouseEvent ) => {

のMouseEventは、React.MouseEvent になってしまっています。

したがって、下記のように、handleMouseMove には ネイティブの MouseEvent を指定するようにすれば解決します。

ts

1import React, { MouseEvent } from 'react'; // React.MouseEvent をインポートしている。2 3const MouseEventItem: React.FC = () => {4 const handleMouseDown = (e: MouseEvent) => { // ここのMouseEventは「React.MouseEvent」を意味する。5 document.addEventListener('mousemove', handleMouseMove);6 document.addEventListener('mouseup', handleMouseUp);7 }8 9 const handleMouseMove = ( e: globalThis.MouseEvent) => { // 修正:ネイティブのMouseEventを指定10 //処理11 }12以下略


または、 importから { MouseEvent } from 'react' を削除し、
handleMouseDown には、React.MouseEvent を指定するようにします。

ts

1import React from 'react'; // { MouseEvent } を削除2 3const MouseEventItem: React.FC = () => {4 const handleMouseDown = (e: React.MouseEvent ) => { // 修正5 document.addEventListener('mousemove', handleMouseMove);6 document.addEventListener('mouseup', handleMouseUp);7 }8 9 const handleMouseMove = ( e: MouseEvent) => { // ここはネイティブのMouseEventを指定したことになる10 //処理11 }12 13以下略

コメントを投稿

0 コメント