2017-02-26 22 views
1

Googleの結果に反応ルータとGoogleキャッシュのページに関する質問があります。この場合、反応ルータ(browserHistory経由)を使用するSPAがあります。問題は次のとおりです。googleキャッシュページはページラッパーで、URL-aはSPAのルータで定義されたURLとは異なります。この場合、アプリケーションのルーティングは見つからないページの定義に該当します。 (例)SPAの反応ルータとGoogleキャッシュページ

このページのコンテンツを表示する代わりに、GoogleのSPAページのキャッシュ結果は、コンポーネントPageNotFoundApp(ページが見つからない*)に表示されます。

説明した問題の解決について、何ができるのでしょうか?

<Route path="*" component={PageNotFoundApp.container} onEnter={intercepPath}/> 

答えて

1

オプションでは、このようなものを使用することができますキャッチオールルート定義のために、onEnterイベントこの後

const projectCanonnicalAddr = "http://localhost"; 
function cacheQueryParser(query) { 
    let out = ''; 
    if (typeof query === 'string') { 
     out = query.split(':').pop().replace(/^[^/]*/, ''); 
    } 
    return out; 
} 
function intercepPath(next, replace) { 
    if (next.location.pathname === '/search' 
     && next.location.query.q 
     && next.location.query.q.indexOf('cache') === 0 
     && next.location.query.q.indexOf(projectCanonnicalAddr) > -1) { 
      replace(null, cacheQueryParser(next.location.query.q)); 
    } 
}; 

を使用してルーティングロジックを傍受することです注入されたreplace関数を使用すると、実際にはブラウザーを2番目のパラメーターとして指定されたパスに移動することに注意してください。私は、Googleキャッシュの場合にこれをテストしていないし、間違った実装かもしれない。 オプションとして、この関数の最初のパラメータとして有効な状態を渡すことができます。

関連する問題