Жду window.location.href? - PullRequest
       7

Жду window.location.href?

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

Так что это может быть странный сценарий, но у меня есть конечная точка (GET, которая возвращает CSV), которую я вызываю с помощью window.location.href = "URL".Этот вызов может занять некоторое время из-за большой загрузки данных, и по этой причине я бы хотел, чтобы на странице отображался загрузочный счетчик.

(Использование React) В начале функции onClick я устанавливаю состояниедля загрузки счетчика в true, вызывая window.location.href и затем устанавливая состояние в false.

Я перепробовал все, что мог, однако не могу заставить спиннер загружаться и прятаться должным образом, как только APIзавершено.Я попытался обернуть это в обещание и попытаться. Тогда, но все еще не удача.

Есть идеи?Я пытаюсь сделать что-то вроде этого:

export = () => {

    this.setState({loading:true});

    window.location.href = "url";

    this.setState({loading:false});

}

1 Ответ

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

Если страница будет заменена на csv ...

..., тогда просто исправьте опечатку (у вас есть loaction вместо location) и удалите this.setState({false}) (чтоэто тоже опечатка, но которую ты не хочешь).Возможно, будет запущен спиннер, и в конце концов страница будет заменена на CSV.

Если страница останется на месте ...

... тогда, как ямы сделали это, чтобы получить cookie, который сообщает мне, был ли получен ответ:

  1. Убедитесь, что cookie не установлен.
  2. Убедитесь, что ответ отправляет cookie.
  3. Используйте цикл таймера на главной странице для поиска значения cookie.

Итак, в вашем случае, что-то вроде:

export = () => {
    this.setState({loading:true});
    this.clearTheCookieValue();
    window.location.href = "url";
    this.cookieWatchTimer = setInterval(() => {
        if (/*the cookie value has now been set*/) {
            clearInterval(this.cookieWatchTimer);
            this.cookieWatchTimer = 0;
            this.setState({loading: fals});
        }
    });
}

...и в componentWillUnmount очистите этот интервальный таймер.

...