Запретить клик по телу, пока POST не вернет ответ - PullRequest
0 голосов
/ 10 июня 2018

В приложении React я хотел бы запретить щелчок по телу, пока метод POST не вернет ответ, а затем разрешить пользователю снова щелкнуть по телу.

Как бы я это сделал?Вот что я пытался сделать:

    async post() {
    try {
        this.preventClick();
        await axios.post(`${url}`, data);
        this.authorizeClick();
    } catch (err) {
        console.log(err);
    }
}

click = (e) => {
    e.preventDefault();
    e.stopPropagation();
}

preventClick = (e) => {
    document.body.addEventListener("click", this.click);
};

authorizeClick = (e) => {
    document.body.removeEventListener("click", this.click);
};

К сожалению, это просто предотвращает щелчок, но не разрешает событие щелчка после того, как метод POST предоставит ответ.Помощь будет высоко ценится!

1 Ответ

0 голосов
/ 10 июня 2018

Когда вы вызываете removeEventListener, вы должны передать ему функцию, которую хотите удалить.

Вы передаете ей новую функцию (хотя и идентичную), которая нене привязан как слушатель события, поэтому его нельзя удалить.

function preventClickHandler(e) {
    e.preventDefault();
    e.stopPropagation();
}

function preventClick() {
    document.body.addEventListener("click", preventClickHandler);
}

function authorizeClick() {
    document.body.removeEventListener("click", preventClickHandler);

}
...