reactjs - React och Typescript: Argument av typ kan inte tilldelas till parameter av typen 'EventListenerOrEventListenerObject'
Jag försöker lägga till Typescript i mitt React-projekt:
componentDidMount() {
document.addEventListener('mousemove', this.handleMouseMove);
}
private handleMouseMove = (e: React.MouseEvent<HTMLElement>) => {
appStore.updateSideWidth(e.pageX);
}
Men jag fick följande fel under this.handleMouseMove:
[ts]
Argument of type '(e: MouseEvent<HTMLElement>) => void' is not assignable to parameter of type 'EventListenerOrEventListenerObject'.
Type '(e: MouseEvent<HTMLElement>) => void' is not assignable to type
'EventListenerObject'.
Property 'handleEvent' is missing in type '(e: MouseEvent<HTMLElement>)
=> void'.
Jag försökte:
1) @ts-ignore det fungerar men jag är tveksam till att göra det eftersom det är därför jag använder Typescript 2) Använd något som:
private handleMouseMove = (e: Event) => {
appStore.updateSideWidth((e as React.MouseEvent<HTMLElement>).pageX);
}
Men fick ett fel som säger att det inte går att konvertera Event till MouseEvent-typ på grund av bristen på altKey.
Tack för hjälpen!
Svar #1
Händelsen e kommer inte att vara en React-händelse eftersom du lägger till en händelselyssnare på document. Så typen av e kommer bara att vara MouseEvent.
försök :
componentDidMount() {
document.addEventListener('mousemove', this.handleMouseMove);
}
private handleMouseMove = (e: MouseEvent) => {
appStore.updateSideWidth(e.pageX);
}
