reactjs Ereignis-listener beforeunload Hinzugefügt, aber nicht entfernt
Ich habe einen reagieren Komponente wie :
import React, { PropTypes, Component } from 'react'
class MyComponent extends Component {
componentDidMount() {
window.addEventListener("beforeunload", function (event) {
console.log("hellooww")
event.returnValue = "Hellooww"
})
}
componentWillUnmount() {
window.removeEventListener("beforeunload", function (event) {
console.log("hellooww")
event.returnValue = "Hellooww"
})
}
render() {
return (
<div>
Some content
</div>
)
}
}
export default MyComponent
Hier Ereignis-lister zur Komponente Hinzugefügt. Wenn ich die Seite aktualisieren, es gibt mir die pop-up-Fragen, um die Seite verlassen.
Aber wenn ich auf einer anderen Seite, und aktualisieren Sie es zeigt wieder die gleichen pop-up.
Ich bin das entfernen die eventListener
von der Komponente auf componentWillUnmount
. Dann, warum es nicht entfernt wird
Wie kann ich entfernen Sie die beoreunload
event auf anderen Seiten ?
InformationsquelleAutor der Frage gamer | 2016-08-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
removeEventListener
erhalten, sollten die in Bezug auf die gleichen callback zugewiesen war, inaddEventListener
. Wiederherstellung der Funktion nicht aus. Die Lösung ist zum erstellen der Rückruf an anderer Stelle (onUnload
in diesem Beispiel), und übergeben Sie es als Referenz zu beidenaddEventListener
undremoveEventListener
:InformationsquelleAutor der Antwort Ori Drori
Ori-Lösung funktionierte nicht für mich. Ich musste das tun, damit es funktioniert... (Danke docs)
InformationsquelleAutor der Antwort Michael