2016-11-09 3 views
5

Ich versuche, die Navigation meiner Anwendung von ihrem Status zu steuern. Hier ist meine Anwendungsfall:Wie bekomme ich den aktuellen Standort vom React-Router?

Given the user is on the Login page 
When the application state changes to isLoggedIn 
Then the application should navigate to the Dashboard page 

Hier ist meine aktuelle Implementierung, die funktioniert:

if (browserHistory.getCurrentLocation().pathname === '/login' && store.isLoggedIn) { 
    browserHistory.push('/dashboard'); 
} 

Leider durch reagieren-Router docs und Probleme geht, ich verstehe, dass browserHistory.getCurrentLocation() keine offizielle API ist und es sollte nicht sein benutzt. Gibt es einen empfohlenen Weg, dies zu tun?

P.S. Dieser Code läuft außerhalb einer React-Komponente, so kann ich nicht verwenden

Antwort

0
export const onAuthChange = (isAuthenticated) => { 
    const pathname = browserHistory.getCurrentLocation().pathname; 
    const isUnauthenticatedPage = unauthenticatedPages.includes(pathname); 
    const isAuthenticatedPage = authenticatedPages.includes(pathname); 

    if (isUnauthenticatedPage && isAuthenticated) { 
    browserHistory.replace('/Dashboard'); 
    } else if (isAuthenticatedPage && !isAuthenticated) { 
    browserHistory.replace('/'); 
    } 

}; 
+2

Es ist oft nützlich für andere Benutzer, wenn Sie Ihre Antwort erklären. In der Zukunft kann Ihre Antwort anderen auf unerwartete Weise helfen, aber das ist weniger wahrscheinlich, wenn es sich nur um einen Codeblock handelt. – Brody

Verwandte Themen