我正在尝试创建一个具有事件监听器的TypeScript React组件。但是,当我这样做时,我会收到以下错误消息:
TS2345:类型为“(event: React.MouseEvent) => void”的参数不能赋值给类型为“EventListenerOrEventListenerObject”的参数。
是否缺少某种类型检查?谢谢。您可以在下面看到组件代码。
sampleComponent.tsx:
import * as React from 'react';
interface MyState {
onClick: boolean;
}
export default class SampleComponent extends React.Component<{}, MyState> {
private divRef: React.RefObject<HTMLDivElement>;
public constructor() {
super({});
this.state = {
onClick: false,
};
this.divRef = React.createRef();
this.handleClickOutside = this.handleClickOutside.bind(this);
}
public componentDidMount(): void {
document.addEventListener('mousedown', this.handleClickOutside);
}
public handleClickOutside(event: React.MouseEvent<HTMLElement>): void {
if (
this.divRef.current.contains(event.target as Node)
) {
this.setState({ onClick: true });
}
}
public render(): React.ReactElement {
return (
<div ref={this.divRef}>
{ this.state.onClick ? 'Foo' : 'Bar' }
</div>
);
}
}
addEventListener
是在 React 之外完成的,或者至少从监听器传递的事件是本地的。 - TrySpace