Как отправить запрос на сервер на странице refre sh в событии `beforeunload`? - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу отправить текущее значение состояния, currentPositionSec на сервер, когда страница обновится. Поскольку componentWillUnmount не будет вызываться при обновлении sh страницы, я использовал событие beforeunload.

  componentDidMount () {
    window.addEventListener('beforeunload', this.onUnload)
  }

  componentWillUnmount () {
    window.removeEventListener('beforeunload', this.onUnload)
  }

  onUnload (e) {
    console.log('INSIDE onUnload')
    const { hashedId } = this.props
    const { currentPositionSec } = this.state
    // sends the progress to a server
    emitter.emit(LECTURE_VIDEO_PROGRESS, {
      currentPositionSeconds: currentPositionSec,
      hashedId: hashedId
    })
  }

INSIDE onUnload печатается в течение короткого периода времени, и страница обновляется Я пробовал это много раз, и прогресс сохраняется только один раз, что странно. Можем ли мы дождаться выполнения кода внутри onUnload? когда я добавляю это в метод onUnload, прогресс сохраняется, но я не хочу, чтобы отображалось всплывающее окно.

e.preventDefault();
e.returnValue = '';
...