Я хочу отправить текущее значение состояния, 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 = '';