8

Giriş/Çıkış'ın bir ev, profil, vb. Olduğu bir uygulama oluşturuyorum. Oturum açtığım uygulamanın son rotayı geçmesini istiyorum. Bazen ziyaret ettiğimde çalışır, sonra giriş yapar ve giriş yaparsam, uygulama kökünü '/' ziyaret etsem de ve sonra giriş yapın, ve giriş yapın, bu beni (ki, tarayıcınızı veya sekmenizi açtığınızda varsayılan sayfa olurdu) olduğum ilk sayfaya götürür. Bunu böyle yazmıştım ve yapmış olduğum yolun çok naif olduğunu düşünüyorum. Ben çok denir render yönteminde yaptım. Sanırım bununla bir ilgisi var ama tamamen emin değilim. Bazı tavsiye, kodu için umuyordum: Bazen doğru gerçekleştirir giriş yapmadan önce biraz beklemek durumundagoBack() beni ilk girişe kadar tüm yoluma götürmek istediğim yere

constructor(props, context) { 
    super(props, context); 
    this.state = UserStore.getState(); 
    this.context = context; 
    } 

render() { 

    console.log(this.state.user.get('authenticated')); 
    if(this.state.user.get('authenticated')){ 
     this.context.history.goBack(); 
    } 

    return (
    //stuff 
    ) 

i tarihe, ben de fark ettim ben her ziyaret rotayı bir devlet itmek durumunda, belki de geçmiş a'ya ekler biraz geç veya biraz zaman alır? Tamamen hata ayıklama hakkında gitmek için emin değil, console.log (this.context.history) sadece yanlış bir yerde bakıyor olabilir sanırım kendi fonksiyonlarının bir demet gösterir?

yolları:

export default (
    <Route component={App}> 
    <Route path="/" component={Dashboard} /> 
    <Route path="dashboard" component={Dashboard} onEnter={requireAuth} /> 
    <Route path="about" component={About} /> 
    <Route path="profile" component={Profile} onEnter={requireAuth}/> 
    <Route path="login" component={LoginSignupPage} /> 
    <Route path="channels" component={Channels} /> 
    </Route> 
); 

enjekte tepki-yönlendirici sorununuzu çözebilir

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import Iso from 'iso'; 
import createBrowserHistory from 'history/lib/createBrowserHistory'; 
import { Router } from 'react-router'; 

import alt from 'altInstance'; 
import routes from 'routes.jsx'; 
import injectTapEventPlugin from 'react-tap-event-plugin'; 
window.React = React; 
injectTapEventPlugin(); 

/* 
* Client side bootstrap with iso and alt 
*/ 
Iso.bootstrap((state, _, container) => { 
    alt.bootstrap(state); 
    ReactDOM.render(<Router history={createBrowserHistory()} children={routes} />, container); 
}); 
+0

'u nasıl enjekte ettiğinizi kod içinde paylaşır mısınız? Hangi yönlendirici sürümünü kullanıyorsunuz? Router'a createHistory() öğesini aktarmanız gerekiyor. – gca

+0

Evet, işte burda, benBrowserHistory yaratıyorum, bu yüzden iyi olmalı. – Karan

+0

Bugün öğrendim, createMemoryHistory ile tamamıyla gayet iyi çalışıyor, ancak url değişmez, yani localhost'a giderse: 3000/ve localhost: 3000/hakkında dizinlenmiş rotayı gösterecek ve sadece oradan gezinebilirsiniz – Karan

cevap

1
<Route path="/" component={App}> 
    <IndexRedirect to='dashboard' /> 
    <Route path="dashboard" component={Dashboard} onEnter={requireAuth} /> 
    <Route path="about" component={About} /> 
    <Route path="profile" component={Profile} onEnter={requireAuth}/> 
    <Route path="login" component={LoginSignupPage} /> 
    <Route path="channels" component={Channels} /> 
</Route> 

Değişim böyle Rota. "/" yolu, "oturum açma" nin üst düzey bir yolu olmalı, ancak aynı düzeyde değil

+0

gerçekten Bunu düzeltmek, aynı zamanda malzeme ui ve kullanıcı arabirimindeki sekme anahtarlarını karıştırdı, yollar değişiyordu, ancak grafiksel hiçbir şey hareket etmiyordu. Neye benzediğini görmek istiyorsanız bunu gerçek bir sitede ağırlayabilirim. – Karan

+0

Sorunun rota yapısından kaynaklandığını düşünüyordum, şimdi doğru görünmüyor. Şimdi kafam karıştı. -_- –

+0

Lütfen bir web sitesine koy. – hazardous