2017-06-27 15 views
0

Ich sah überall vor dem Posten dieser Frage, aber ich konnte nichts finden !!!Reagieren Router v3 onEnter warten auf Versprechen

Also ich möchte, dass einige Routen in meiner Reagieren-App warten auf ein Versprechen gelöst werden, so dass ich die Benutzer-Rollen überprüfen kann, wenn dieser Benutzer auf eine bestimmte Route zugreifen kann.

Ich habe versucht, den Code unten, aber es funktioniert nicht!

checkRoles = (nextState, replace) => { 

    if(token && !loggedUser) { 
      this.getUserData() 
      .then(() => { 
       alert('you are logged in.'); 
       replace('/dashboard'); 
      }) 
      .catch(() => { 
       alert('session expired.'); 
       replace('/login'); 
      }); 
      } else { 
      alert('Please login first.'); 
      replace('frontend/login'); 
      } 
     } 

Der ersetzen vollständig in catch und then Funktionen ignoriert wird, habe ich auch versucht callback() ein drittes arg vorbei, ist es nicht so gut funktionieren!

Antwort

0

Sie haben 3.e Parameter der onEnter-Funktion:

checkRoles = (nextState, replace, cb) => { 
    if (token && !loggedUser) { 
    this.getUserData() 
     .then(() => { 
     alert('you are logged in.'); 
     replace('/dashboard'); 
     cb(); 
     }) 
     .catch(() => { 
     alert('session expired.'); 
     replace('/login'); 
     cb(); 
     }); 
    } else { 
    alert('Please login first.'); 
    replace('frontend/login'); 
    cb(); 
    } 
}; 
+0

Leider Mann, ich sagte schon, dass ich das versucht, aber es funktioniert nicht. Die Warnung wird angezeigt, aber die Ersetzung wird weiterhin ignoriert –

Verwandte Themen