React / Typescript - лучший способ создать элемент с истекающим сроком действия - PullRequest
0 голосов
/ 10 июля 2020
• 1000 1002 * Однако с помощью приведенного ниже кода в консоли Chrome Devtools я получил ошибку «Uncaught TypeError: Cannot read property 'addEventListener' of undefined».

Что именно не так с моим кодом? Спасибо много!

import * as React from 'react';
import Tooltip from './Tooltips';

interface ExpiringPopupProps {
    delay: number;
    data: any;
}

interface ExpiringPopupState {
    visible: boolean;
}

// An expiring popup that hides itself after 5 seconds and appears when data is updated
export default class ExpiringPopup extends React.Component<ExpiringPopupProps, ExpiringPopupState> {

    public constructor(props) {
        super(props);
        this.state = { visible: true };
    }

    public componentDidUpdate() {
        this.setState({ visible: false});
        this.setTimer(this.props.delay);
    }

    public render() {
        return this.state.visible
            ? <Tooltip isInfo={true}>The data has just been refreshed</Tooltip>
            : null;
    }

    private setTimer = (delay) => {
        setTimeout(() => this.setState({ visible: false }), delay);
    }

}
...