2016-06-30 34 views
0

URLを/productsにリダイレクトするアプリがあります。リアクションルータとリダイレクトでアイデアがない?

私はreact-routerの新しい構文を使用しています:

const baseroute =() => { 
    return { 
     path: '/', 
     Redirect:'/products', 
     childRoutes: [ 
      { 
       path: '*', 
       Redirect: '/product' 
      } 
     ] 
    } 
} 

をこれは私のroutesである:

<Router history={browserHistory}> 
    { products() } 
    { about() } 
    { baseroute() } 
</Router> 

すべてがリダイレクトが動作しない除く、素晴らしい作品。

ユーザーはここに行けば

www.mydomain.com/about <--- great! 
www.mydomain.com ---> SHOULD redirect to 
-----> www.mydomain.com/products 

またはNO適切な子ルートがないので:

www.mydomain.com/whatever 
-------> www.mydomain.com/products 

答えて

1

Redirectプロパティが正しくないので、私はそれが動作していないと思います。 Redirectはコンポーネントであり、プロパティではありません(https://github.com/reactjs/react-router/blob/master/docs/API.md#redirect)。

良いアイデアは、あなたがここにドキュメントをチェックすることができonEnterフック、使用することです:

https://github.com/reactjs/react-router/blob/master/docs/guides/RouteConfiguration.md#enter-and-leave-hooks

は基本的にあなたが言うだろう「と、このルートで入力し、それを行う」:

{ 
    path: '/my-path', 
    onEnter: (nextState, replace) => { 
     replace('/replaced-path'); 
    } 
} 

replacereact-routerで提供される機能なので、パス上でreplaceとなります。別のURLにアクセスする必要がある場合や、何らかの「更新/リダイレクト」を強制する場合は、のようなものをonEnterの中に使用することができます。

詳細情報についてonEnterフック:また

https://github.com/reactjs/react-router/blob/master/docs/Glossary.md#enterhook

は、私がchildRoutesあなたがあなたのためにそれを処理する親ルート上onEnterを使用しているので、必要とされていることとは思いません。

希望すると助かります!

関連する問題