2017-02-15 5 views
2

In reagieren Router documentation für onEnter Haken sie angegeben, wie zu behandeln, aber für onLeave gibt es kein Beispiel. Meine Frage ist, wie man bestätigt, dass Benutzer die Seite richtig verlassen wollen.In reagieren Router ist onEnter ist das gleiche wie onLeave

Nach dem unten angegebenen Code in beiden Fällen, ob Benutzer auf cancel oder ok klicken, verlässt es die Seite. OnEnter Hook funktioniert jedoch nach Logik.

const checkEnterAbout = (nextState, replace, callback) => { 
    if(!confirm('do you want to enter really!!!')){ 
     replace(`/`); 
    }else{ 
     callback(); 
    } 

} 

const checkLeaveAbout = (prevState) => { 
    console.log(prevState); 
    return confirm("Are you sure you want to leave this page"); 
} 

<Route path="/about" component={About} onEnter={checkEnterAbout} onLeave={checkLeaveAbout} /> 

Auch wenn ich versuchte, withRouter Führung bestätigt. dessen gibt mir einen Fehler von

Failed prop type: Invalid prop `component` supplied to `Route`. 
    in Route 
+0

Möchten Sie eine Bestätigung auf ** ** jeder Seite der Benutzer Blätter? Oder nur die About-Seite? – samvv

+0

gerade über Seite – owaishanif786

Antwort

2

Es gibt einen Haken routerWillLeave genannt, hier ein Beispiel:

https://github.com/ReactTraining/react-router/blob/master/docs/guides/ConfirmingNavigation.md

+0

Ich habe versucht, aber kein Glück überprüfen Sie die bearbeitete Antwort – owaishanif786

+0

nach dem Ändern der Export-Standard withRouter (About) zu module.exports = withRouter (About); es funktioniert. wundert sich, warum OnLeave und OnEnter API-Schnittstelle nicht gleich ist. einer arbeitet durch componentDidMount und andere ist über onEnter !!! – owaishanif786