2016-03-22 21 views
5

Yönlendiricinin (Redux ile birlikte) başlangıç ​​yönlendirmeleriyle ilgili sorularım var. Redux mağazamdaki durumu temel alan bir kaç rotam var. Kullanıcıyı her zaman sayfa yüklemesinde belirli bir rotaya yönlendirmem gerekiyor. Benim kök yoluna OnEnter fonksiyonu ekledikReaktif yönlendiricisi ile başlangıç ​​rotasını ayarlama

<Provider store={store}> 
    <Router history={history}> 
     <Route path="/" component={App} onEnter={redirectToInitialRoute}> 
      <Route path="/send" component={OverviewPage} /> 
      <Route path="/thanks" component={ConfirmPage} /> 
      <Route path="/:categoryIdentifier" component={CategoryPage} /> 
     </Route> 
    </Router> 
</Provider> 

şu şekildedir:

benim yolları halen ayarlanan yoludur. Bunu, kullanıcının uygulamaya girdiği sayfadan bağımsız olarak her zaman sayfa yüklemesinde yeniden yönlendirmem gerektiğinden beri yaptım. aşağıdaki gibi benim OnEnter fonksiyonu kurulduğundan yoludur:

function redirectToInitialRoute (nextState, replace) { 
    if (condition) { 
     replace('/send'); 
    } 
    else if (anotherCondition) { 
     replace('/thanks'); 
    } 
} 

Ancak bu kurulum ile ne olur (örneğin) 'anotherCondition' yerine olmasıdır ve '/ teşekkürler' yönlendirir. OnEnter kök yolundan geçirildiği için, redirectToInitialRoute yeniden tetiklenir. 'AnotherCondition' hala doğru olduğundan, yeniden yönlendirme bir yeniden yönlendirme döngüsüne neden olur.

Bu sorunu çözmenin en iyi yolu ne olacağını merak ediyordum? Herhangi bir yardım büyük beğeni topluyor. Şimdiden teşekkürler!

cevap

5

Dizin güzergahı ekleme ve sonra yeniden yönlendirmeyi nasıl değiştirebilirim?

componentDidMount: function() { 
    if (condition) { 
     browserHistory.push('/here'); 
    } else { 
     browserHistory.push('/there'); 
    } 
} 
: Hoşgeldin Bileşen Sonra

<Provider store={store}> 
    <Router history={history}> 
     <Route path="/" component={App} onEnter={redirectToInitialRoute}> 
      <IndexRoute component={Welcome} />   
      <Route path="/send" component={OverviewPage} /> 
      <Route path="/thanks" component={ConfirmPage} /> 
      <Route path="/:categoryIdentifier" component={CategoryPage} /> 
     </Route> 
    </Router> 
</Provider>