reactjs - Hur man skapar klickhändelsehanteringsfunktioner med TypeScript


Jag försöker lägga till en händelselyssnare för klick, men det står att classList inte finns på typen EventTarget.

class UIModal extends React.Component<Props> {
    handleClick = (e: Event) => {
        if ((e.target as EventTarget).classList.contains('modal-mask')) {
            this.props.close();
        }
    }

    componentDidMount() {
        window.addEventListener('click', this.handleClick);
    }

    componentWillUnmount() {
        window.removeEventListener('click', this.handleClick);
    }

    render() {
        return (
            <div className="modal-mask">
                <div className="modal">
                    {this.props.children}
                </div>
            </div>
        );
    }
}

Svar #1

Kanske borde du prova e.target som Element?

Svar #2

e.target bör vara e.currentTarget

Det pågår en liten diskussion om detta här https://github.com/Microsoft/TypeScript/issues/299