2017-02-24 10 views
5

używając „reagują-router”: „^ 3.0.2”,jak zresetować reagowania-router na przeładowanie strony

Kiedy robię przeładowania strony jest mi potrzebny, aby przejść do widoku domyślnego, który w tej chwili robić. Jednak faktyczna trasa, która jest w historii, jest wciąż taka sama jak ta, z której zrobiłem odświeżenie. Ten komponent ponownie się montuje, gdy nie powinien.

Historia trasy

export const browserHistory = useRouterHistory(useBeforeUnload(createHistory))() 

trasy

<Router history={browserHistory}> 
    <Route path='/' name='Auth' component={Auth}> 
     <IndexRoute 
     component={Dashboard} 
     onEnter={(nextState, replace) => replace('/login')} /> 
     <Route path='dashboard' name='Dashboard' component={Dashboard} /> 
     <Route path='resources' name='Resources' component={Resources} /> 
     <Route path='users' name='Users' component={UsersContainer} /> 
     <Route path='user/:params' name='User' component={UserContainer} /> 
    </Route> 
    <Route path='/' name='NoAuth' component={NoAuth}> 
     <Route path='login' name='Login Page' component={Login} /> 
    </Route> 
    </Router> 

Oto jak sprawdzić, czy użytkownik nadal ma ważny token sesji, i jak przekierować na desce rozdzielczej. Nie jestem pewien, czy robię to w najlepszy możliwy sposób.

const _checkAuth =() => { 
    if (profile) { 
    const res = JSON.parse(profile) 
    store.dispatch({ type: types.LOGIN_IDENTITY_SUCCESS, res }) 
    console.log(browserHistory.getCurrentLocation().pathname) 
    router.replace('/dashboard') 
    } 
} 

_checkAuth() 

Odpowiedz

3

jeśli chcesz przesunąć na nowej trasie z reagują-router można wykorzystać metodę .Push wcisnąć inną drogę na stosie, to nie usunie pierwszą trasę w historii, jeśli o to ci szukasz, ale będzie ona prawidłowo wcisnąć nową trasę do routera reagować-

const _checkAuth =() => { 
    if (profile) { 
    const res = JSON.parse(profile) 
    store.dispatch({ type: types.LOGIN_IDENTITY_SUCCESS, res }) 
    console.log(browserHistory.getCurrentLocation().pathname) 
    browserHistory.push('/dashboard'); 
    } 
} 

_checkAuth() 

Wystarczy zastąpić router.replace('/dashboard') z browserHistory.push('/dashboard')