Не удается зарегистрировать Service Worker в скрипте React - PullRequest
1 голос
/ 09 июля 2019

Я создаю базовое веб-приложение с ReactJS для создания push-уведомлений.Я хочу дать пользователю возможность вручную зарегистрировать работника сервиса, нажав на кнопку.Но ничего не происходит (нет сообщений об успехе в консоли).Я где-то ошибся?

В стандартном файле js код для регистрации работника сервиса работает (хотя и без кнопки), но не в файле реакции.

код длязарегистрируйте работника сервиса: enter image description here

и прослушиватель событий на кнопке: enter image description here

Заранее спасибо!

1 Ответ

1 голос
/ 09 июля 2019

Основная проблема, которую я вижу, заключается в том, что вы присоединяете EventListener к window, который будет выполняться при 'загрузке'. Поскольку это событие, скорее всего, уже запущено, поскольку вы можете нажать на кнопку, ПО не загружается. Попробуйте удалить часть обработчика событий, чтобы напрямую вызвать функцию регистрации. Тогда это будет выглядеть примерно так:

function registerSW() {
  if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('sw.js')
    //...
  }
}

Другая проблема, которую я вижу, заключается в том, что вы пытаетесь установить состояние, непосредственно назначая его. В ответ вы не должны обращаться к этому состоянию, а просто вызывать this.setState следующим образом:

// ...
.then(swReg => {
  console.log('SW registered');
  this.setState({ swReg: swReg });
})
// ...
...