reactjs do c упоминается для отложенного события в хуке useEffect, что это значит? - PullRequest
2 голосов
/ 14 апреля 2020

Я читал reactjs do c о useEffect хуке, и они упомянули:

функция, переданная для использования Eффектов после разметки и рисования, во время отложенное событие.

Вы можете объяснить, что такое отложенные события? Это часть ядра DOM или как?

Спасибо ...

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Короче говоря

during a deferred event, который вас только смутил, означает: функция, которую вы передаете хуку useEffect, не запустится сразу, а запустится во время события, которое будет запущено позже (после картина будет точнее)

Подробнее

Реакция под капотом работает с реализацией алгоритмов под названием Fiber. Что в двух словах улучшает обработку React асинхронных задач и приоритетов.

Эффекты, созданные useEffect , внутренне называются пассивными эффектами. Пассивные эффекты, основанные на порядке их определения в компоненте функции, связаны друг с другом с использованием следующего метода и запланированы для запуска после каждой краски (не визуализации).

// This commit included a passive effect. These do not need to fire until
// after the next paint. Schedule an callback to fire them in an async
// event. To ensure serial execution, the callback will be flushed early if
// we enter rootWithPendingPassiveEffects commit phase before then.

Вы можете проверить реализацию, если вы заинтересованы.

0 голосов
/ 14 апреля 2020

Чтобы ответить на вопрос с указанным c вариантом использования реакции:
Вы хотите указать, что ваше Progressive Web App можно установить, и предоставить пользовательский процесс установки в приложении:

  • Прослушайте событие beforeinstallprompt.
  • Сохраните событие beforeinstallprompt, чтобы его можно было использовать для запуска процесса установки позже.
  • Оповестите пользователя о том, что ваш PWA устанавливается, и предоставьте кнопку или другой элемент для запуска процесса установки в приложении.

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

Итак, небольшой пример отложенного события

 let deferredPrompt;

window.addEventListener('beforeinstallprompt', (e) => { 
  // Stash the event so it can be triggered later.
  deferredPrompt = e;
  // Update UI notify the user they can install the PWA
  showInstallPromotion();
});

Мы предоставляем элемент пользовательского интерфейса, на который пользователь нажимает, используя отложенную переменную

buttonInstall.addEventListener('click', (e) => {
  // Hide the app provided install promotion
  hideMyInstallPromotion();
  // Show the install prompt
  deferredPrompt.prompt();
  // Wait for the user to respond to the prompt
  deferredPrompt.userChoice.then((choiceResult) => {
    if (choiceResult.outcome === 'accepted') {
      console.log('User accepted the install prompt');
    } else {
      console.log('User dismissed the install prompt');
    }
  })
});

Надеюсь, это немного рассеет туман.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...