Nano Hash - криптовалюты, майнинг, программирование

закрыть модальное окно начальной загрузки через 5 секунд

Привет, начальное состояние emailSent: false. Я хочу закрыть модальное окно через 5 секунд, когда this.state.emailSent: !== prevState.emailSent. Я пробовал следующее, которое закрывается, как только this.state.emailSent's value is set to true. Однако я хочу, чтобы модальное окно закрывалось через 5 секунд. Если я использую setTimeout(), то он закрывает модальное окно через 5 секунд после того, как модальное окно было отрисовано, тогда как оно должно закрываться через 5 секунд после if (this.state.emailSent !== prevState.emailSent).

Если у вас есть вопросы, почему я использовал jQuery в React, потому что это модальное окно отображается с использованием начальной загрузки <Button data-target="#open-modal" data-toggle="modal">. Он не визуализируется с использованием состояния отображения/скрытия.

componentDidUpdate(prevProps, prevState) {

        if (this.state.emailSent !== prevState.emailSent) {

            $("#export-modal").modal('hide');

        }

    }

используя setTimeout(), но он игнорирует оператор if и закрывается модально через 5 секунд после рендеринга на странице.

componentDidUpdate(prevProps, prevState) {

        if (this.state.emailSent !== prevState.emailSent) {
            setTimeout(() => {
                $("#export-modal").modal('hide');
            }, 5000);

        }

    }

23.07.2019

  • Он не игнорирует и не может игнорировать оператор IF. Ваш оператор if возвращает TRUE и, следовательно, запускается setTimeout(). Отладьте шаг за шагом и убедитесь, что оператор IF действительно работает. 23.07.2019
  • даже если у меня просто if(this.state.emailSent === true) в качестве чека, это не сработает. Обратите внимание на начальное состояние emailSent is false. 23.07.2019
  • @NawedKhan Привет, спасибо за ваш комментарий. действительно, emailSent был истинным, когда модальное открытие вызывало запуск setTimeout. 24.07.2019

Ответы:


1

Я полагаю, вы могли бы использовать функцию "setInterval".

Я настроил пример во фрагменте ниже.

function checkStateChange() {
  console.log("check");
}

jQuery(document).ready(function() {
  console.log("ready");
  
  var interval = setInterval(function() {
    checkStateChange();
  }, 5000)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

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

Итак, после выбранного события каждые 5 секунд вы будете проверять состояние, и если оно изменилось, вы закрываете модальное окно.

После закрытия модального окна вам, вероятно, следует остановить периодическую проверку, вызвав «clearInterval».

clearInterval(interval);
02.08.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..